如何在main.cpp配置文件中将应用程序组件属性设置为对象数组?
在main.php配置文件的components部分中,我们有一个部分:
'components' => array(
....
'company' => array(
'class' => 'application.components.Company',
'employees' => array(
'class' => 'application.components.Employee'
)
)
);
但$ company-> employees属性只是设置为'application.components.Employee'.. 我原以为它等于array(new Employee)(即数组中的Employee对象)。
关于此事的任何知识?
答案 0 :(得分:0)
您需要在此处使用标准PHP表示法,而不是Yii的class
说明符,因为您只是将值分配给组件成员var employees
:< / p>
'company' => array(
'class' => 'application.components.Company',
'employees' => array(new Employee())
)
那说,为什么这样呢?只需在公司类的构造函数或employee
方法中初始化init
。
答案 1 :(得分:0)
所以你似乎想要为你的自定义对象使用Yii的对象初始化逻辑,对吧? 这样的事情可能有所帮助:
class Company extends CApplicatinoComponent
{
private $_employees = array();
public function setEmployees($value)
{
foreach($value as $config)
$this->_employees[] = Yii::createComponent($config);
}
public function getEmployees()
{
return $this->_employees;
}
}
当然你应该添加一些错误检查。但现在您可以将您的员工配置为:
'company' => array(
'class' => 'Company',
'employees' => array(
array(
'class' => 'Employee',
'somePropertyOfEmployee' => 'bla',
),
array(
'class' => 'OtherEmployee',
'otherProperty' => 'bla',
),
),
),