【发布时间】:2015-08-19 04:15:28
【问题描述】:
我的 Person 类具有属性 {property}_{countrycode}。这个类可以有 20 个属性,每个属性都有国家代码。 20x3 = 类中定义的 60 个属性。对于每种语言,我都需要在课堂上手动定义它们。
class Person extends CActiveRecord {
public $name_sk;
public $name_cz;
public $name_de;
public static function model($className = __CLASS__)
{
return parent::model($className);
}
function tableName() {
return 'person';
}
}
问题:如何在类中动态生成/定义这些属性?
示例:
public function __construct() {
$langs = array('sk', 'cz', 'de');
$properties = array('name', 'surname', 'age');
foreach($langs as $lang) {
foreach ($properties as $k => $value) {
$this->{$value. "_". $lang} = null;
}
}
}
【问题讨论】:
-
如果您将
$this->{$k. "_". $lang} = null;更改为$this->{$value. "_". $lang} = null;会发生什么,因为目前您使用的密钥会导致类似 0_sk 而不是 name_sk -
你有没有列:name_sk,name_cz 等在表人???
-
@DanilaGanchar 是的,我有
-
您应该考虑更改您的设计并将国家/地区添加到他们自己的数据存储中。它会让你的生活变得更轻松。
-
@Ing.MichalHudak 据我了解,您使用 name_de, name_cz 进行翻译?在类中 Person 必须只是属性(如年龄、姓名等)。你能详细解释一下任务吗?我认为社区可以提出更漂亮、更简单的方法。