Yii использовать (получить, обратиться) пользовательский компонент по id, указанному в конфигурационном файле приложения
Primary tabs
предпложим, что мы написали некоторый компонент MongoLogComponent.php (представлен одноимённым классом) положив его в папку protected/components
Приведу возможное начало кода подобного компонента:
class MongoLogComponent extends CApplicationComponent { public $host = 'localhost'; // хост к которому надо подключаться public $base = 'test'; // имя базы для журнала public $collection = 'log'; // имя базы для журнала public $connection = 0;// дескриптор соединения с монгоДБ public $conllction = 0; // используемая коллекция /*в init() прописываем все необходимые дейсвтия, которые нужно совершить до того, как класс "вступит" в работу*/ public function init() { $this->collection = $this->getCollection(); } public function trace($str) { echo $str; } ............. ... . . . .. }
При этом в конфиге нашего приложения имеются такие записи (config/main.php):
return array( //путь к корню нашего сайта 'basePath' => realpath(dirname(__FILE__) . '/..'), //пути к директориям,скрипты из которых //следует подключить 'import' => array( 'application.models.*', 'application.components.*', ), // прописываем конфигурацию для компонентов приложения 'components' => array( ............... .............. ......... /*настройки компонента */ 'dblog' => array( 'class' => 'application.components.MongoLogComponent', ),
dblog - и будет играть роль id нашего класса в рамках Yii приложения.
теперь мы можем смело поместить все необходимые действия по инициаллизации (необходимые при создании) компонента в его init() метод - так как yii сам создаст для нас компонент прочитав конфигурационный файл.-
а мы всегда сможем обратиться к его инициаллизированному экземпляру(объекту) так (например сразу вызвав какой-то метод):
Yii::app()->dblog->trace('Запрос журнала = ActionShowLog() ');
- Log in to post comments
- 2692 reads