这对我来说很难解释,但我会尽力而为。
我开始编写一个 CApplicationComponent 从数据库获取配置参数。
<?php
class parameters extends CApplicationComponent
{
public $cacheAll = false;
public $dbConnectionId = null;
public $applications = array();
public function __get( $attr )
{
if( $this->applications && in_array($attr, $this->applications) )
{
if( Yii::app()->$$this->applications[$attr]['id'] )
{
//in work...
}
}
}
}
public $applications
将是这样的数组:
$arrray = array (
'productName' => array (
'tableName'=>'settings',
'propertyColumn'=>'parameters',
'valueColumn'=>'values',
),
);
嗯......事实是我需要或最想要获得这样的属性:
Yii::app()->parameters->productName->param1
我知道 Yii 为类属性实现了魔法 getter 和 setter,所以我会这样访问$applications
:
Yii::app()->parameters->applications
所以,我现在重写这个__get
函数,看看请求的值是否是数组 $applications 中的一个键,否则我会将它委托给 Yii 定义的一个parent::__get($attr)
.
如果请求的值是 $applications 数组中的一个键,那么我必须创建一个对象,以便我可以使用->
运算符和另一个魔法 setter/getter,但我真的不知道怎么做。
有更好的方法吗?谁能指出我正确的方向?
非常感谢