详解在php的yii框架中使用行为behaviors的方法,yiibehaviors一个绑定了行为的类,表现起来是这样的:
// step 1: 定义一个将绑定行为的类class myclass extends yii\base\component{ // 空的}// step 2: 定义一个行为类,他将绑定到myclass上class mybehavior extends yii\base\behavior{ // 行为的一个属性 public $property1 = 'this is property in mybehavior.'; // 行为的一个方法 public function method1() { return 'method in mybehavior is called.'; }}$myclass = new myclass();$mybehavior = new mybehavior();// step 3: 将行为绑定到类上$myclass->attachbehavior('mybehavior', $mybehavior);// step 4: 访问行为中的属性和方法,就和访问类自身的属性和方法一样echo $myclass->property1;echo $myclass->method1();
上面的代码你不用全都看懂,虽然你可能已经用脚趾头猜到了这些代码的意思, 但这里你只需要记住行为中的属性和方法可以被所绑定的类像访问自身的属性和方法一样直接访问就ok了。 代码中, $myclass 是没有 property1 method() 成员的。这俩是 $mybehavior 的成员。 但是,通过 attachbehavior() 将行为绑定到对象之后, $mycalss 就好像练成了吸星大法、化功大法,表现的财大气粗,将别人的属性和方法都变成了自己的。
另外,从上面的代码中,你还要掌握使用行为的大致流程:
从 yii\base\component 派生自己的类,以便使用行为; 从 yii\base\behavior 派生自己的行为类,里面定义行为涉及到的属性、方法; 将component和behavior绑定起来; 像使用component自身的属性和方法一样,尽情使用行为中定义的属性和方法。使用行为,必须像前文描述的一样先把它附加到 yii\base\component 类或其子类。一旦行为附加到组件,就可以直接使用它。
行为附加到组件后,可以通过组件访问一个行为的公共成员变量或 getter 和 setter 方法定义的属性:
// prop1 是定义在行为类的属性echo $component->prop1;$component->prop1 = $value;类似地也可以调用行为的公共方法:// foo() 是定义在行为类的公共方法$component->foo();
如你所见,尽管 $component 未定义 prop1 和 foo() ,它们用起来也像组件自己定义的一样。
如果两个行为都定义了一样的属性或方法,并且它们都附加到同一个组件,那么首先附加上的行为在属性或方法被访问时有优先权。
附加行为到组件时的命名行为,可以使用这个名称来访问行为对象,如下所示:
$behavior = $component->getbehavior('mybehavior');
也能获取附加到这个组件的所有行为:
$behaviors = $component->getbehaviors();
移除行为
要移除行为,可以调用 yii\base\component::detachbehavior() 方法用行为相关联的名字实现:
$component->detachbehavior('mybehavior1');
也可以移除全部行为:
$component->detachbehaviors();
您可能感兴趣的文章:php的yii框架中移除组件所绑定的行为的方法php的yii框架中行为的定义与绑定方法讲解深入讲解php的yii框架中的属性(property)php的yii框架中使用数据库的配置和sql操作实例教程深入解析php的yii框架中的event事件机制全面解读php的yii框架中的日志功能yii使用find findall查找出指定字段的实现方法解析yii数据库的增删查改yii php framework实用入门教程(详细介绍)详解php的yii框架中组件行为的属性注入和方法注入
http://www.bkjia.com/phpjc/1111898.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/1111898.htmltecharticle详解在php的yii框架中使用行为behaviors的方法,yiibehaviors 一个绑定了行为的类,表现起来是这样的: // step 1: 定义一个将绑定行为的类class m...
