BranchSalaries
是从CComponent派生的类。它具有month
和year
属性的获取/设置方法。
以下代码不起作用(更具体地说,不初始化year
和month
属性):
new BranchSalaries(array('id'=>'branch_salaries', 'year'=>$year, 'month'=>$month));
最简单的方法是创建一个可以初始化的类,将数组传递给构造函数?
更正BranchSalaries
不是直接来自CComponent,而是来自CDataProvider。
答案 0 :(得分:2)
function __construct($arr){
foreach($arr AS $key=>$value){
$this->$key = $value;
}
}
您需要一个可以处理数组的构造函数。
编辑:如果你需要使用setter :(这假设setter就像setId()而不是setid()
function __construct($arr){
foreach($arr AS $key=>$value){
$method = "set".ucfirst($key);
$this->$method($value);
}
}
答案 1 :(得分:1)
要像Yii那样设置类,可以使用Yii::createComponent()
,然后不需要创建cunstomized构造函数。我的情况是:
Yii::createComponent(array(
'class' => 'BranchSalaries',
'id'=>'branch_salaries',
'year'=>$year,
'month'=>$month
));
虽然它看起来不方便用户,但它可用于自动创建对象。
class
参数也可以与路径别名一起使用:
Yii::createComponent(array(
'class' => 'ext.someExtension.BranchSalaries',
'id'=>'branch_salaries',
'year'=>$year,
'month'=>$month
));
它还从外部类范围设置类属性,因此将自动使用getter和setter。