zoukankan      html  css  js  c++  java
  • PHP 魔术方法 __isset __unset (三)

    慢慢长寻夜,明月高空挂

    __isset()    - 在对类中属性或者非类中属性使用isset()方法的时候如果没有或者非公有属性,则自动执行__isset()的方法

    __unset()  - 在对类中属性或者非类中属性使用unset()方法的时候如果没有或者非公有属性,则自动执行__unset()的方法

    <?php
        /**
         * 针对类中的魔术方法 __isset() 和 __unset() 的例子
         */
    
    class Example {
        public $public;
        protected $protected;
        private $private;
        
        public function __construct(){
            $this->public = 'pub';
            $this->protected = 'pro';
            $this->private = 'pri';
        }
        
        public function __isset($var){
            echo '这里通过__isset()方法查看属性名为 '.$var."
    ";
        }
        
        public function __unset($var){
            echo '这里通过__unset()方法要销毁属性名为 '.$var."
    ";
        }
    }
    
    $exa = new Example;
    
    echo '<pre>';
    var_dump(isset($exa->public));
    echo "
    ";
    var_dump(isset($exa->protected));
    echo "
    ";
    var_dump(isset($exa->private));
    echo "
    ";
    var_dump(isset($exa->noVar));
    echo "
    ";
    echo '<hr/>';
    
    
    unset($exa->public);
    var_dump($exa);
    
    echo "
    ";
    unset($exa->protected);
    echo "
    ";
    unset($exa->private);
    echo "
    ";
    unset($exa->noVar);
    echo "
    ";
    

     结果如下:

    bool(true)
    
    这里通过__isset()方法查看属性名为 protected
    bool(false)
    
    这里通过__isset()方法查看属性名为 private
    bool(false)
    
    这里通过__isset()方法查看属性名为 noVar
    bool(false)
    ------------------------------------------------------------------------------
    object(Example)#1 (2) {
      ["protected:protected"]=>
      string(3) "pro"
      ["private:private"]=>
      string(3) "pri"
    }
    
    这里通过__unset()方法要销毁属性名为 protected
    
    这里通过__unset()方法要销毁属性名为 private
    
    这里通过__unset()方法要销毁属性名为 noVar
  • 相关阅读:
    .net SMTP发送Email 更新(可带附件)
    Ext JS4百强应用: 做可编辑的,可checked的treegrid--第11强
    使你更有思想的20本书
    Sencha Architect 2 的使用
    Test SRM Level One: TemperatureScales
    Test SRM Level Two: CountExpressions, Brute Force
    JPDA 利用Eclipse和Tomcat进行远程调试 --转
    非对称加密算法RSA--转
    java/php/c#版rsa签名以及java验签实现--转
    JAVA/PHP/C#版RSA验签--转
  • 原文地址:https://www.cnblogs.com/uduemc/p/4120064.html
Copyright © 2011-2022 走看看