找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 59|回复: 0
打印 上一主题 下一主题

详解在PHP的Yii框架中使用行为Behaviors的方法

[复制链接]

2588

主题

2588

帖子

7694

积分

论坛元老

Rank: 8Rank: 8

积分
7694
跳转到指定楼层
楼主
发表于 2018-2-14 05:38:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            一个绑定了行为的类,表现起来是这样的:
// 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框架中使用数据库的配置和SQL操作实例教程
  • 详解PHP的Yii框架中组件行为的属性注入和方法注入
  • 详解PHP的Yii框架中的Controller控制器
  • PHP的Yii框架中Model模型的学习教程
  • PHP的Yii框架中创建视图和渲染视图的方法详解
  • PHP的Yii框架中View视图的使用进阶
  • PHP的Yii框架中过滤器相关的使用总结
  • 详解PHP的Yii框架中自带的前端资源包的使用
  • Yii隐藏URL中index.php的方法
  • PHP  Yii清理缓存的实现方法
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端