This is hard to explain for me but I'll do my best.
I am starting to write a CApplicationComponent to get config params from DB.
public $applications would be an array like this:
Well... the fact is that I need, or mostly want, to get an attribute like this:
I know that Yii implements magic getter and setters for class properties, so I would access $applications this way:
So, I am now overriding the __get function, to see if the requested value is a key in the array $applications, or else I will delegate it to the Yii's defined one with parent::__get($attr).
If the requested value is a key in the $applications array, then I would have to create an object so I can use the -> operator, and another magic setter/getter, but I really don't know how yet.
IS there a better way of doing it? Can anyone point me in the right direction?
Thanks a lot
I am starting to write a CApplicationComponent to get config params from DB.
<?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 would be an array like this:
$arrray = array ( 'productName' => array ( 'tableName'=>'settings', 'property'=>'param1' ), );
Well... the fact is that I need, or mostly want, to get an attribute like this:
Yii::app()->parameters->productName->param1
I know that Yii implements magic getter and setters for class properties, so I would access $applications this way:
Yii::app()->parameters->applications
So, I am now overriding the __get function, to see if the requested value is a key in the array $applications, or else I will delegate it to the Yii's defined one with parent::__get($attr).
If the requested value is a key in the $applications array, then I would have to create an object so I can use the -> operator, and another magic setter/getter, but I really don't know how yet.
IS there a better way of doing it? Can anyone point me in the right direction?
Thanks a lot