0

如何将应用程序组件属性设置为 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 对象)。

有这方面的知识吗?

4

2 回答 2

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',
        ),
    ),
),
于 2013-04-26T09:28:09.430 回答
0

你需要在这里使用标准的 PHP 表示法,而不是 Yii 的class说明符,因为你只是给组件成员 var赋值employees

'company' => array(
    'class' => 'application.components.Company',
    'employees' => array(new Employee())
)

也就是说,为什么要这样做?只需employee在 Company 类的构造函数或init方法中初始化即可。

于 2013-04-25T22:53:15.467 回答