Yiisoft yii2 base component php

Class yii\base\Component

Компонент предоставляет функции событий и поведения в дополнение к функции свойств, которая реализована в его родительском классе Object .

Событие-это способ «впрыскивания» пользовательского кода в существующий код в определенных местах.Например,объект комментария может вызвать событие «добавления» при добавлении пользователем комментария.Мы можем написать пользовательский код и прикрепить его к этому событию,чтобы при срабатывании события (т.е.добавления комментария),наш пользовательский код был выполнен.

Событие идентифицируется именем, которое должно быть уникальным в пределах класса, в котором оно определено. Имена событий чувствительны к регистру .

К событию можно прикрепить один или несколько обратных вызовов PHP, называемых обработчиками событий . Вы можете вызвать trigger() , чтобы вызвать событие. Когда возникает событие, обработчики событий будут вызываться автоматически в том порядке, в котором они были прикреплены.

Чтобы прикрепить обработчик события к событию, вызовите on() :

$post->on('update', function ($event) < // отправляем уведомление по электронной почте >);

В вышеуказанном случае к «обновлению» сообщения прилагается анонимная функция.Вы можете прикрепить следующие типы обработчиков событий:

  • анонимная функция: function ($event)
  • метод объекта: [$object, ‘handleAdd’]
  • статический метод класса: [‘Page’, ‘handleAdd’]
  • глобальная функция: ‘handleAdd’

Подпись обработчика события должна быть следующей:

где $event — это объект yii \ base \ Event, который включает параметры, связанные с событием.

Вы также можете прикрепить обработчик к событию при настройке компонента с конфигурационным массивом.Синтаксис выглядит следующим образом:

где on add означает присоединение события к событию add .

Иногда вам может понадобиться связать дополнительные данные с обработчиком события,когда вы прикрепляете его к событию,а затем обращаться к нему при вызове обработчика.Вы можете сделать это с помощью

$post->on('update', function ($event) < // к данным можно получить доступ через $ event-> data >, $data);

Поведение — это экземпляр yii \ base \ Behavior или его дочерний класс. Компонент может быть присоединен с одним или несколькими поведениями. Когда поведение прикреплено к компоненту, его общедоступные свойства и методы могут быть доступны через компонент напрямую, как если бы компонент владеет этими свойствами и методами.

Чтобы прикрепить поведение к компоненту, объявите его в behaviors() или явно вызовите attachBehavior() . Поведения, объявленные в behaviors(), автоматически присоединяются к соответствующему компоненту.

Также можно прикрепить поведение компонента при настройке его с помощью конфигурационного массива.Синтаксис выглядит следующим образом:

где as tree означает присоединение поведения с именем tree , а массив будет передан в Yii :: createObject () для создания объекта поведения.

Дополнительные сведения и информацию об использовании компонента см. В статье руководства по компонентам .

Источник

Компоненты ¶

Компоненты — это главные строительные блоки приложений основанных на Yii. Компоненты наследуются от класса yii\base\Component или его наследников. Три главные возможности, которые компоненты предоставляют для других классов:

Как по отдельности, так и вместе, эти возможности делают классы Yii более простыми в настройке и использовании. Например, пользовательские компоненты, включающие в себя yii\jui\DatePicker , могут быть использованы в представлении для генерации интерактивных элементов выбора даты:

use yii\jui\DatePicker; echo DatePicker::widget([ 'language' => 'ru', 'name' => 'country', 'clientOptions' => [ 'dateFormat' => 'yy-mm-dd', ], ]); 

Свойства виджета легко доступны для записи потому, что его класс унаследован от класса yii\base\Component.

Компоненты — очень мощный инструмент. Но в то же время они немного тяжелее обычных объектов, потому что на поддержку событий и поведений тратится дополнительные память и процессорное время. Если ваши компоненты не нуждаются в этих двух возможностях, вам стоит унаследовать их от yii\base\BaseObject, а не от yii\base\Component. Поступив так, вы сделаете ваши компоненты такими же эффективными, как и обычные PHP объекты, но с поддержкой свойств.

При наследовании ваших классов от yii\base\Component или yii\base\BaseObject, рекомендуется следовать некоторым соглашениям:

  • Если вы переопределяете конструктор, то добавьте последним аргументом параметр $config и затем передайте его в конструктор предка.
  • Всегда вызывайте конструктор предка в конце вашего переопределенного конструктора.
  • Если вы переопределяете метод yii\base\BaseObject::init(), убедитесь, что вы вызываете родительскую реализацию этого метода в начале вашего метода init() .
 namespace yii\components; use yii\base\BaseObject; class MyClass extends BaseObject < public $prop1; public $prop2; public function __construct($param1, $param2, $config = []) < // . инициализация происходит перед тем, как будет применена конфигурация. parent::__construct($config); > public function init() < parent::init(); // . инициализация происходит после того, как была применена конфигурация. > > 

Следуя этому руководству вы позволите настраивать ваш компонент при создании. Например:

$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]); // альтернативный способ $component = \Yii::createObject([ 'class' => MyClass::class, 'prop1' => 3, 'prop2' => 4, ], [1, 2]); 

Информация: Способ инициализации через вызов Yii::createObject() выглядит более сложным. Но в то же время он более мощный из-за того, что он реализован на самом верху контейнера внедрения зависимостей.

Жизненный цикл объектов класса yii\base\BaseObject содержит следующие этапы:

  1. Предварительная инициализация в конструкторе. Здесь вы можете установить значения свойств по умолчанию.
  2. Конфигурация объекта с помощью $config . Во время конфигурации могут быть перезаписаны значения свойств по умолчанию, установленные в конструкторе.
  3. Конфигурация после инициализации в методе init(). Вы можете переопределить этот метод, для проверки готовности объекта и нормализации свойств.
  4. Вызов методов объекта.

Первые три шага всегда выполняются из конструктора объекта. Это значит, что если вы получите экземпляр объекта, он уже будет проинициализирован и готов к работе.

Источник

Читайте также:  Java checking if string is null
Оцените статью