Компоненты yii: события и поведение?

В настоящее время я изучаю структуру yii и читаю их документацию.

но я все еще не понимаю компоненты. что это. они рассказывают о событиях и поведении компонентов.

может кто-нибудь объяснить эти условия для меня и дать мне реальные примеры приложений того, какой компонент, его события и поведение могут быть?

было бы полезно!

Ответ 1

A CComponent сам по себе не делает много. Это очень похоже на QObject в Qt. CComponent может создавать события и может иметь делегатов для событий (через attachEventHandler()).

Что касается поведения, в руководстве говорится:

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

Чтобы прикрепить поведение к компоненту, вызвать attachBehavior; и отделить поведение от компонента, вызов detachBehavior.

Поведение может быть временно включено или отключено, вызывая enableBehavior или disableBehavior, соответственно. когда отключено, методы поведения не могут вызывается через компонент.

Начиная с версии 1.1.0, свойства поведения (либо его переменные открытого участника или ее свойства, определяемые с помощью геттеров и/или сеттеры) можно получить через компонент, к которому он прикреплен.

Это дает вам возможность имитировать механизм сигналов и слотов или шаблон стратегии (путем включения или отключения поведения).

Большинство классов в Yii имеют CComponent в качестве базового класса.

В качестве пользователя вы увидите преимущества, которые они предоставляют с помощью упомянутых выше механизмов, когда вы создадите свои собственные компоненты (в разделе protected/components/).

Вы можете найти хорошую отправную точку для реализации компонентов здесь: http://www.yiiframework.com/doc/guide/basics.component

Ответ 2

В Yii приложение работает через взаимодействие разных объектов, этот объект можно просто рассматривать как "компоненты" или "строительные блоки" приложения. Компонент - это просто объект, который писал для выполнения или облегчения конкретной задачи в приложении Yii. Если вы посмотрите на "Типичный рабочий процесс приложения Yii" на [Http://www.yiiframework.com/doc/guide/1.1/en/basics.mvc] [1]

вы поймете, что помимо вида и макетов (которые считаются скриптами) и index.php, все, что взаимодействует с другими, является компонентом. Все они выполняют разные задачи при запуске приложения.

Почти все в Yii является компонентом (или производным от класса CComponent).

Более конкретно,

CComponent реализует протокол определения, используя свойства и события.

События. События позволяют выполнять последовательность (более одного) действий, когда что-то происходит в компоненте. Вы определяете событие и присоединяете к нему несколько функций (действий). Теперь, когда это событие возникает внутри компонента, все функции, связанные с этим событием, выполняются. По моему мнению, они несколько похожи на концепцию крючков в Wordpress.

Конкретное применение событий в компоненте определяется Yii как

Это полезно, когда вы хотите прервать обычный поток приложений без расширения базовых классов.

Поведение. Поведение - это просто Yii способ предоставить вам множественное наследование, которое не поддерживается PHP5, в то же время устраняя многоцелевую проблему с множественным наследованием. Если вы хотите наследовать свойства и методы из классов A и B. Вы расширяете класс A, а затем добавляете класс B в качестве его поведения, а затем можете использовать все методы класса B. Теперь, если оба A и B содержат функцию с именем "полезная функция()", все вызовы этой функции приведут к выполнению "полезной функции" только из класса A. Если оба класса A и B были добавлены как поведение для класса, тогда вызов "полезной функции" приведет к выполнению метода из поведения, которое было присоединено первым.

P.S. (Я не эксперт. Поэтому, пожалуйста, поправьте меня, если я где-то не прав.)