Компоненты yii: события и поведение? - PullRequest
12 голосов
/ 03 февраля 2010

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

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

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

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

Ответы [ 3 ]

5 голосов
/ 06 февраля 2010

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

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

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

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

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

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

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

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

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

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

4 голосов
/ 15 июля 2012

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

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

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

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

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

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

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

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

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

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

2 голосов
/ 12 февраля 2011

Возможно, эта дополнительная страница в их вики могла бы дать больше информации: http://www.yiiframework.com/wiki/44/behaviors-events/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...