• PHP魔法方法的使用


    1.__get / __set
    当类没有要存取的属性时,就调用这两个函数
    $obj = new IMoocObject();
    $obj->title = "hello";
    echo $obj->title;

    <?php
    namespace IMooc;
    class Object
    {
    protected $array = array();
    function __set($key, $value)
    {
    var_dump(__METHOD__);
    $this->array[$key] = $value;
    }
    function __get($key)
    {
    var_dump(__METHOD__);
    return $this->array[$key];
    }
    }

    2.__call / __callStatic
    当类没有所调用的函数时,就调用这两个函数
    $obj = new IMoocObject();
    echo $obj->test("hello", 123);
    echo IMoocObject::test("world", 1233);

    <?php
    namespace IMooc;
    class Object
    {
    function __call($func, $param)
    {
    var_dump($func, $param);
    return "magic function ";
    }
    static function __callStatic($func, $param)
    {
    var_dump($func, $param);
    return "magic static function ";
    }
    }

    3.__toString
    当对象当做字符串使用时自动调用该函数
    $obj = new IMoocObject();
    echo $obj;

    <?php
    namespace IMooc;

    class Object
    {
    function __toString()
    {
    return "toString";
    }
    }

    4.__invoke
    对象当做函数使用时自动调用该函数
    $obj = new IMoocObject();
    echo $obj("test1");

    <?php
    namespace IMooc;

    class Object
    {
    function __invoke($param)
    {
    var_dump($param);
    return "invoke";
    }
    }




  • 相关阅读:
    kettle初探
    ECLIPSE 不能连接MYSQL 8 的现象
    easyreport 安装手记
    eclipse 下安装 lombok.jar
    mysql 8 安装及更改密码
    转:Python的这几个技巧,简直屌爆了
    转:通用缩写表
    检查webpack版本
    vue-cli脚手架项目按需引入elementUI
    webstorm “Unterminated statement”
  • 原文地址:https://www.cnblogs.com/phonecom/p/e13a1ade55bc0b242be1d6b855edc707.html
Copyright © 2020-2023  润新知