课程咨询 :17156168575 QQ:2720475033

  • 在Yii框架中使用Behaviors的方法

    发布:济南达内教学部      来源:济南达内教学部      时间:2016-11-11

  • 下面的代码不用全都看懂,虽然可能已经用脚趾头猜到了这些代码的意思, 但这里济南php培训班小编建议只需要记住行为中的属性和方法可以被所绑定的类像访问自身的属性和方法一样直接访问就OK了。 代码中, $myClass 是没有 property1 method() 成员的。这俩是 $myBehavior 的成员。   // Step 1: 定义一个将绑定行为的类

    class MyClass extends yii\base\Component

    {

    // 空的

    }

    // Step 2: 定义一个行为类,他将绑定到MyClass上

    class MyBehavior extends yii\base\Behavior

    {

    // 行为的一个方法

    public function method1()

    {

    return 'Method in MyBehavior is called.';

    }

    }

    $myClass = new MyClass();

    $myBehavior = new MyBehavior();

    // 行为的一个属性

    public $property1 = 'This is property in MyBehavior.';

    // Step 3: 将行为绑定到类上

    $myClass->attachBehavior('myBehavior', $myBehavior);

    // Step 4: 访问行为中的属性和方法,就和访问类自身的属性和方法一样

    通过 attachBehavior() 将行为绑定到对象之后, $myCalss 就好像练成了吸星大法、化功大法,表现的财大气粗,将别人的属性和方法都变成了自己的。一个绑定了行为的类,表现起来是这样的:

    echo $myClass->property1;

    echo $myClass->method1();

    另外,从上面的代码中,你还要掌握使用行为的大致流程:

    从 yii\base\Component 派生自己的类,以便使用行为;

    从 yii\base\Behavior 派生自己的行为类,里面定义行为涉及到的属性、方法;

    将Component和Behavior绑定起来;

    使用行为,必须像前文描述的一样先把它附加到 yii\base\Component 类或其子类。一旦行为附加到组件,就可以直接使用它。

    像使用Component自身的属性和方法一样,尽情使用行为中定义的属性和方法。

    行为附加到组件后,可以通过组件访问一个行为的公共成员变量或 getter 和 setter 方法定义的属性:

    附加行为到组件时的命名行为,可以使用这个名称来访问行为对象,如下所示:

    $behavior = $component->getBehavior('myBehavior');

    echo $component->prop1;

    // "prop1" 是定义在行为类的属性

    $component->prop1 = $value;

    类似地也可以调用行为的公共方法:

    // foo() 是定义在行为类的公共方法

    $component->foo();

    济南php培训班小编尽管 $component 未定义 prop1 和 foo() ,它们用起来也像组件自己定义的一样。

    也能获取附加到这个组件的所有行为:

    如果两个行为都定义了一样的属性或方法,并且它们都附加到同一个组件,那么首先附加上的行为在属性或方法被访问时有优先权。

    $behaviors = $component->getBehaviors();

    移除行为

    也可以移除全部行为:

    $component->detachBehaviors();

    要移除行为,可以调用 yii\base\Component::detachBehavior() 方法用行为相关联的名字实现:

    $component->detachBehavior('myBehavior1');

上一篇:PHP把stdClass Object转array的三个方法

下一篇:达内PHP学员入职京东商城,获年薪10万

最新开班日期  |  更多

PHP高级开发工程师就业班

PHP高级开发工程师就业班

开班日期:7月31日

PHP高级开发工程师周末班

PHP高级开发工程师周末班

开班日期:7月31日

济南PHP培训班就业班

济南PHP培训班就业班

开班日期:7月31日

PHP高级开发工程师周末班

PHP高级开发工程师周末班

开班日期:7月31日

 扫一扫,关注一下! 济南:历下区山大路47号数码港大厦 济南:历下区趵突泉北路三联商社
青岛:市南区金坛路17号 潍坊:奎文区东风东街299号建行大厦
烟台:海港路25号阳光100城市广场 临沂:兰山区红旗路1号苏宁易购
淄博:张店区金晶大道68号华润大厦 济宁:市中区太白路10号苏宁生活广场
课程培训电话:17156168575 QQ:2720475033 全国服务监督电话:400-111-8989    服务邮箱 tousu@tedu.cn

2001-2017 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56