zoukankan      html  css  js  c++  java
  • 常见的几种魔术变量

    如果在类中变量,方法被设置权限,外部想要设置,访问可以使用参考以下:

    __set和__get

    class Tets{
        private $a = '';
        public function __set($var,$val){
            $this->$val = $val;
        }
        public function __get($var){
            return $this->$var;
        }
    }
    
    $test = new Test();
    $test->a = 'abc';     //如果没有设置__set会报错,因为外部不能调用private的变量
    var_dump($this->a);

    __isset

    class Test{
        private $abc = 'abc';
    
        public function __isset($var){
            return isset($this->$var)?true:false;
        }
    }
    $test= new Test();
    var_dump(isset($test->abc));

     __unset

    class Test{
        private $abc = 'abc';
    
        public function __unset($var){
            unset($this->$var);
        }
    }
    $test = new Test();
    unset($test->abc);

    __call

    class Test{
        public function __call($func,$arguments){
            echo($func."<br/>");
            print_r($arguments);
        }
    }
    
    $test = new Test();
    $test->go(1,'ok'); //当实例化对象没有找到方法,就会自动调用__call();

    __callStatic

    class Test{
        public static function __callStatic($func,$arguments){
                    echo($func."<br/>");
            print_r($arguments);
        }
    }
    Test::go(1,'ok');  //没有找到类方法就自动调用__callStatic()

    __invoke

    class Test{
        public function __invoke($arg){
            var_dump($arg);
        }
    }
    
    $test = new Test();
    $test('go....');  //直接将实例化的对象当做函数来执行就用__invoke()

    __toString

    class Test{
        public function __toString(){
            return "hello;;;";
        }
    }
    
    $test = new Test();
    echo $test;   //直接打印实例化对象,就可以使用__toString

    其他常见魔术变量

    __clone() 当对象被克隆时,被调用

    __construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。

    __destruct() 当删除一个对象或对象操作终止的时候,调用该方法。

    系统常量

    __FILE__ 当前文件名
    __LINE__ 当前行数
    __FUNCTION__ 当前函数名
    __CLASS__ 当前类名
    __METHOD__ 当前对象的方法名

  • 相关阅读:
    Running as a packaged application--- -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n
    Druid 专题
    java8中的localdate和localtime用法举例
    Spring处理跨域请求
    数据库版本管理工具Flyway——基础篇
    QQ邮箱开启SMTP服务的步骤
    QQ邮箱如何设置SMTP代理收发邮件
    SMTP协议简介
    Error:Execution failed for task ':app:dexDebug'. > com.android.ide.common.process.ProcessException
    Android客户端与服务器交互中的token
  • 原文地址:https://www.cnblogs.com/zgx123/p/7822907.html
Copyright © 2011-2022 走看看