• YII框架的行为


    一、什么是行为

    行为,也称为 mixins,可以无须改变类继承关系即可增强一个已有的类的功能。

    当一个对象或类被注入某些行为后,这个对象可以像访问自己定义的方法和属性一样访问注入进来的方法和属性。

    二、定义行为

    要定义行为,通过继承 yiiaseBehavior 或其子类来建立一个类。如:

    <?php
    namespace vendorBehavior;
    
    use yiiaseBehavior;
    /**
     * 定义一个服务员的点餐的行为
     */
    class MyBehavior extends Behavior
    {
        public $paper='paper<br/>'; //
    
        private $_pen; //
    
        public function getPen() {
            return $this->_pen;
        }
    
        public function setPen($value)
        {
            $this->_pen = $value;
        }
        /**
         * 点餐
         */
        public function order() {
            echo 'order<br/>';
        }
    }

    三、附加行为

    1、静态附加上去,覆写行为要附加的组件类的 yiiaseComponent::behaviors() 方法即可。

    <?php
    namespace vendorBehavior;
    use vendorBehaviorMyBehavior;
    use yiiaseComponent;
    /**
     * 定义一个服务员类
     */
    class Waiter extends Component{
        public function behaviors() {
            return [
                MyBehavior::className(),
            ];
        }
    }

    2、动态附加上去

    $waiter->attachBehavior('MyBehavior', MyBehavior::className()); //动态附加
    $waiter->detachBehavior('MyBehavior'); //动态移除

     四、使用行为

    <?php
    namespace appcontrollers;
    use yiiwebController; 
    use YII;
    use vendorBehaviorMyBehavior;
    use vendorBehaviorWaiter;
    
    class TestController extends Controller
    {
        public function actionIndex() {
            $waiter = new Waiter;
            $waiter->attachBehavior('MyBehavior', MyBehavior::className()); //动态附加
            $waiter->detachBehavior('MyBehavior'); //动态移除
            $waiter->order();
            echo $waiter->paper;
            $waiter->setPen('pen<br/>');
            echo $waiter->getPen();
        }
    }

    五、关于更多信息

    http://www.yiichina.com/doc/guide/2.0/concept-behaviors

  • 相关阅读:
    Delphi编程 -- 视频捕获avicap32.pas源代码
    Delphi的DataSource事件
    InfoPower4000 wwGrid控件的一些应用技巧
    TwwDBGrid + TwwDBLookupCombo 下拉列表
    Delphi中TwwDBLookupCombo中属性的简单设置
    DevExpress中文说明--TdxCameraControl Object 摄像头组件
    如何Windows分页控件中增加统计功能
    Kibana:运用索引模式的 formatter 来探索 IP 信息
    Alertmanager高可用
    Prometheus高可用部署
  • 原文地址:https://www.cnblogs.com/buexplain/p/4858904.html
Copyright © 2020-2023  润新知