yii组件:事件和行为?

时间:2010-02-03 02:44:17

标签: php yii

我正在学习yii框架并阅读了他们的文档。

但我仍然不理解这些组件。这些是什么。他们谈论组件事件和行为。

有人可以为我解释这些条款,并给我一个组件,事件和行为可能是什么的真实应用示例吗?

会有所帮助!

3 个答案:

答案 0 :(得分:5)

CComponent本身并没有做太多。它非常像Qt中的QObject。 CComponent可以引发事件,并且可以拥有事件的委托(通过attachEventHandler())。

关于行为,手册说:

  

行为的方法可以是   被调用就像它们属于   零件。多种行为都可以   附在同一个组件上。

     

要将行为附加到组件,   call attachBehavior;并分离   来自组件的行为,调用   detachBehavior。

     

可以暂时启用行为   或通过调用enableBehavior禁用   或者分别禁用行为。什么时候   禁用,行为方法不能   通过组件调用。

     

从1.1.0版开始,a   行为的属性(要么是它的   公共成员变量或其   通过getter和/或定义的属性   setters)可以通过   它附属的组件。

这使您可以模拟signals and slots机制,或strategy pattern(通过启用或禁用行为)。

Yii中的大多数类都将CComponent作为基类。

作为用户,当您创建自己的组件(在protected / components /下)时,您将看到他们通过上述机制提供的好处。

您可以在此处找到实施组件的良好起点:http://www.yiiframework.com/doc/guide/basics.component

答案 1 :(得分:4)

在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都包含一个名为'usefulfunction()'的函数,则对该函数的所有调用都将导致仅从A类执行'usefulfunction'。如果将A类和B类作为行为添加到类中,则“有用函数”调用将导致从首先附加的行为中执行方法。

P.S。 (我不是专家。如果我在任何地方都错了,请纠正我。)

答案 2 :(得分:2)

也许这个wiki上的额外页面可以提供更多洞察力: http://www.yiiframework.com/wiki/44/behaviors-events/