zoukankan      html  css  js  c++  java
  • yii2框架随笔5

    /**
         * Returns a value indicating whether a property is defined for this component.
         * A property is defined if:
         *
         * - the class has a getter or setter method associated with the specified name
         *   (in this case, property name is case-insensitive);
         * - the class has a member variable with the specified name (when `$checkVars` is true);
         * - an attached behavior has a property of the given name (when `$checkBehaviors` is true).
         *
         * 与 Object 中的方法类似,只是添加了是否检测 behavior 的参数(下一篇着重介绍Object.php类)
         *
         * @param string $name the property name
         * @param boolean $checkVars whether to treat member variables as properties
         * @param boolean $checkBehaviors whether to treat behaviors' properties as properties of this component
         * @return boolean whether the property is defined
         * @see canGetProperty()
         * @see canSetProperty()
         */
        public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
        {
            // $checkVars 标记是否 check 对象的是否具有该属性(不是 getter 和 setter 定义出的属性)
            // $checkBehaviors 标记是否 check behavior 中的属性
            return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
        }
        /**
         * Returns a value indicating whether a property can be read.
         * A property can be read if:
         *
         * - the class has a getter method associated with the specified name
         *   (in this case, property name is case-insensitive);
         * - the class has a member variable with the specified name (when `$checkVars` is true);
         * - an attached behavior has a readable property of the given name (when `$checkBehaviors` is true).
         *
         * 检查对象或类是否能够获取 $name 属性
         *
         * @param string $name the property name
         * @param boolean $checkVars whether to treat member variables as properties
         * @param boolean $checkBehaviors whether to treat behaviors' properties as properties of this component
         * @return boolean whether the property can be read
         * @see canSetProperty()
         */
        public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
        {
            if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
                return true;
            } elseif ($checkBehaviors) {
                $this->ensureBehaviors();
                foreach ($this->_behaviors as $behavior) {
                    if ($behavior->canGetProperty($name, $checkVars)) {
                        // behavior 中存在名为 $name 的可读属性,就认为该对象也存在
                        return true;
                    }
                }
            }
            return false;
        }
        /**
         * Returns a value indicating whether a property can be set.
         * A property can be written if:
         *
         * - the class has a setter method associated with the specified name
         *   (in this case, property name is case-insensitive);
         * - the class has a member variable with the specified name (when `$checkVars` is true);
         * - an attached behavior has a writable property of the given name (when `$checkBehaviors` is true).
         *
         * 检查对象或类是否能够设置 $name 属性
         *
         * @param string $name the property name
         * @param boolean $checkVars whether to treat member variables as properties
         * @param boolean $checkBehaviors whether to treat behaviors' properties as properties of this component
         * @return boolean whether the property can be written
         * @see canGetProperty()
         */
        public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
        {
            if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
                return true;
            } elseif ($checkBehaviors) {
                $this->ensureBehaviors();
                foreach ($this->_behaviors as $behavior) {
                    if ($behavior->canSetProperty($name, $checkVars)) {
                        // behavior 中存在名为 $name 的可写属性,就认为该对象也存在
                        return true;
                    }
                }
            }
            return false;
        }
        /**
         * Returns a value indicating whether a method is defined.
         * A method is defined if:
         *
         * - the class has a method with the specified name
         * - an attached behavior has a method with the given name (when `$checkBehaviors` is true).
         *
         * 检查对象或类是否具有 $name 方法, $checkBehaviors 标记是否 check behavior 中的方法
         *
         * @param string $name the property name
         * @param boolean $checkBehaviors whether to treat behaviors' methods as methods of this component
         * @return boolean whether the property is defined
         */
        public function hasMethod($name, $checkBehaviors = true)
        {
            if (method_exists($this, $name)) {
                return true;
            } elseif ($checkBehaviors) {
                $this->ensureBehaviors();
                foreach ($this->_behaviors as $behavior) {
                    if ($behavior->hasMethod($name)) {
                        // behavior 中存在名为 $name 的方法,就认为该对象也存在
                        return true;
                    }
                }
            }
            return false;
        }
    /**
         * Returns a list of behaviors that this component should behave as.
         *
         * Child classes may override this method to specify the behaviors they want to behave as.
         *
         * The return value of this method should be an array of behavior objects or configurations
         * indexed by behavior names. A behavior configuration can be either a string specifying
         * the behavior class or an array of the following structure:
         *
         * ~~~
         * 'behaviorName' => [
         *     'class' => 'BehaviorClass',
         *     'property1' => 'value1',
         *     'property2' => 'value2',
         * ]
         * ~~~
         *
         * Note that a behavior class must extend from [[Behavior]]. Behavior names can be strings
         * or integers. If the former, they uniquely identify the behaviors. If the latter, the corresponding
         * behaviors are anonymous and their properties and methods will NOT be made available via the component
         * (however, the behaviors can still respond to the component's events).
         *
         * Behaviors declared in this method will be attached to the component automatically (on demand).
         *
         * 定义该对象中要用到的 behavior,格式如上
         *
         * @return array the behavior configurations.
         */
        public function behaviors()
        {
            return [];//返回一个空数组
        }
    
    
    
    
    

    因为此类继承了Object,下一篇我们着重分析一下Object.php这个类。

  • 相关阅读:
    jQueryEasyUi行编辑打造增删改查
    css样式DEMO
    jqueryEasyui常用代码
    Jquery easyui tree 一些常见操作
    EasyUI项目中的自定义JS
    easyui里弹窗的两种表现形式
    EasyUI扩展方法
    JS-easyui 扩展easyui.datagrid,添加数据loading遮罩效果代码
    Being a Hero (hdu 3251 最小割 好题)
    AWS携手上海嘉定政府推出首个联合孵化器 为创业公司拓展AWS云服务可用资源
  • 原文地址:https://www.cnblogs.com/taokai/p/5401073.html
Copyright © 2011-2022 走看看