Компоненты в Yii

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

Где взять компоненты

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

echo DatePicker::widget([
   'language' => 'ru',
   'name'  => 'country',
   'clientOptions' => [
      'dateFormat' => 'yy-mm-dd',
   ],
]);
Результат будет таким: Компонент выбора дат в фреймворке Yii

Как создаются компоненты

Обычно классы компонентов наследуются от yii\base\Component. При этом другим классам доступны свойства, события и поведения от компонентов.

Если необходимо написать простейший компонент без большого количества событий и представлений, то необходимо наследовать класс yii\base\BaseObject, а не от yii\base\Component. Это даст преимущество по скорости выполнения кода. При этом следует придерживаться следующих правил:
  • При переопределении конструктора необходимо добавлять последним аргументом параметр $config, передавая его в конструктор предка. В конце переопределённого конструктора всегда необходимо вызывать конструктор предка.
  • Если переопределять метод yii\base\BaseObject::init(), то нужно вызывать родительскую реализацию этого метода в начале метода init().
Приведём пример кода:
<?php

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();

      // код инициализации после передачи конфигурации
   }
}
При создании объектов класса yii\base\BaseObject и вызове его методов происходят следующие действия:
  1. Предварительная инициализация в конструкторе, где задаются значения свойств по умолчанию.
  2. Конфигурация объекта с помощью $config, при которой могут быть перезаписаны значения свойств по умолчанию, установленные ранее в конструкторе.
  3. Конфигурация после инициализации в методе init(). Этот метод можно переопределить, чтобы делать дополнительную обработку свойств.
  4. Вызов методов объекта.
Вызов компонентов и передача им параметров в представлении может происходить двуми способами:
// при создании объекта класса
$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]);

// альтернативный способ
$component = \Yii::createObject([
   'class' => MyClass::class,
   'prop1' => 3,
   'prop2' => 4,
], [1, 2]);
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб

⇡ наверх