• 技术文章 >后端开发 >PHP问题

    php对魔术方法的认识

    coldplay.xixicoldplay.xixi2020-10-07 15:28:33原创143

    php对魔术方法的认识:1、【_set】属性不存在时自动设置属性;2、【__get】属性不存在或不能读取时,设置该方法可读取;3、【__call】方法不存在时,执行;4、【__callStatic】静态方法不存在时,执行。

    php对魔术方法的认识:

    1、_set:属性不存在时自动设置属性

    /**
    * 属性不存在时通过__set自动设置属性
    * @param $key [键名]
    * @param $value [属性值]
    */
    function __set($key,$value){
    $this->arr[$key] = $value;
    }
     
    代码:
    $object->title = 'blue'; //设置不存在的属性,调用__set()
    echo $object->title,'<br/>'; //输出不存在的属性,调用__get()
     
    输出:
    blue

    2、__get:属性不存在或不能读取时,设置该方法可读取

    /**
    * 属性不存在或不能读取(属性为私有private)时,通过__get读取
    * @param $key 键名
    * @return 属性
    */
    function __get($key){
    return $this->arr[$key];
    }

    3、__call:方法不存在时,执行

    /**
    * 方法不存在时,执行__call方法
    * @param $func [方法名]
    * @param $param [参数]
    * @return [description]
    */
    function __call($func,$param){
    var_dump($func);
    echo '<br/>';
    var_dump($param);
    echo '<br/>';
    }
     
    代码:
    $object -> show('hello','world'); //调用不存在的方法,调用__call()
     
    输出:
    string(4) "show"
    array(2) { [0]=> string(5) "hello" [1]=> string(5) "world" }

    4、__callStatic:静态方法不存在时,执行

    /**
    * 静态方法不存在时,执行__callStatic方法
    * @param $func [方法名]
    * @param $param [参数]
    * @return [description]
    */
    static function __callStatic($func,$param){
    var_dump($func);
    echo '<br/>';
    var_dump($param);
    echo '<br/>';
    }
     
    代码:
    IMooc\Object::show('hello','world'); //调用不存在的静态方法,调用__callStatic()
     
    输出:
    string(4) "show"
    array(2) { [0]=> string(5) "hello"  [1]=>string(5) "world" }

    5、__toString:当对象转换为字符串时,执行

    /**
    * 当对象转换为字符串时,执行__toString方法
    * @return string [description]
    */
    function __toString{
    return __CLASS__;
    }
     
    代码:
    echo $object,'<br/>'; //将对象以字符串形式输出,调用__toString()
     
    输出:
    IMooc\Object

    6、__invoke:当把对象当成函数来使用时,执行

    /**
    * 当把对象当成函数来使用时,执行__invoke方法
    * @param [type] $param [参数]
    * @return [type] [description]
    */
    function __invoke($param){
    var_dump($param);
    }
     
    代码:
    echo $object('hello'); //将对象当函数使用,调用__invoke()
     
    输出:
    string(5) "hello"

    相关免费学习推荐:php编程(视频)

    以上就是php对魔术方法的认识的详细内容,更多请关注php中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:php 魔术方法
    上一篇:php如何隐藏图片真实地址 下一篇:php如何转换成html
    第13期线上培训班

    相关文章推荐

    • php中的类魔术方法有哪些• php的魔术方法各有什么作用• php5中魔术方法函数有哪些?• php如何认识魔术方法

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网