美文网首页
PHP魔术方法的使用

PHP魔术方法的使用

作者: 汉白羽扇 | 来源:发表于2017-06-24 11:41 被阅读0次

Object类

<?php
/**
 * Created by PhpStorm.
 * User: dragon
 * Date: 2017/5/4
 * Time: 14:38
 */

namespace core\lib;


class Object
{
    protected $array = [];

    public function __set($name, $value)
    {
        // TODO: Implement __set() method.
        var_dump(__METHOD__);
        $this->array[$name] = $value;

    }

    public function __get($name)
    {
        // TODO: Implement __get() method.
        var_dump(__METHOD__);
        return $this->array[$name];
    }

    public function __call($name, $arguments)
    {
        // TODO: Implement __call() method.
        var_dump($name,$arguments);
        return "magic function\n";
    }

    static function __callStatic($name, $arguments)
    {
        // TODO: Implement __callStatic() method.
        var_dump($name,$arguments);
        return "magic static function\n";
    }

    public function __toString()
    {
        // TODO: Implement __toString() method.
        return __CLASS__;

    }

    public function __invoke($param)
    {
        // TODO: Implement __invoke() method.
        var_dump($param);
        return "invoke";
    }
}

Object类中包含_set()和_get()方法后,就可以访问到未定义的属性

include CORE.'/z_frame.php';
spl_autoload_register('\core\z_frame::load');

$obj = new \core\lib\Object();

$obj->title = 'zdc';
echo $obj->title;
操作未定义的属性title

Object类中包含__call()方法后,可以调用未定义的方法

include CORE.'/z_frame.php';
spl_autoload_register('\core\z_frame::load');

$obj = new \core\lib\Object();

echo $obj->test("zdc",123);
调用未定义的函数test

Object类中包含__callStatic()方法后,可以调用未定义的静态方法

include CORE.'/z_frame.php';
spl_autoload_register('\core\z_frame::load');

$obj = new \core\lib\Object();

echo \core\lib\Object::test("zdc",123);
调用未定义的静态函数test

用__toString()方法可将一个类对象当字符串返回

include CORE.'/z_frame.php';
spl_autoload_register('\core\z_frame::load');

$obj = new \core\lib\Object();

echo $obj;
将一个类对象当字符串返回

在Object类中定义__invoke()函数可以将对象当函数使用

include CORE.'/z_frame.php';
spl_autoload_register('\core\z_frame::load');

$obj = new \core\lib\Object();

echo $obj("zdc");

相关文章

  • php魔术方法

    PHP 中被称为魔术方法(Magic methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术...

  • PHP面试梳理

    PHP php 魔术方法 、魔术常量 php cli autoload , spl_autoload compos...

  • PHP魔术方法使用

    支持魔术方法 __construct 构造方法 当一个对象被实例化的时候会被首先调用 在PHP框架种依赖注入以及中...

  • PHP魔术方法

    PHP魔术方法

  • PHP魔术方法的使用

    Object类 Object类中包含_set()和_get()方法后,就可以访问到未定义的属性 Object类中包...

  • PHP魔术方法

    魔术方法(Magic methods) PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了...

  • 规则引擎升级版(直接能跑)

    利用了php的魔术方法

  • PHP中常用魔术函数及魔术常量总结

    PHP中会使用到很多魔术函数和魔术常量:以Yii2.0中调用model中方法来举例: __construct()实...

  • PHP 魔术方法使用总结

    1.__construct(),构造函数,构建对象时被调用。 2.__destruct(),析构函数,明确销毁对象...

  • php魔术方法总结使用

    (1)_clone克隆 实例化对象的赋值是传递的对象的地址索引,两个变量指向同一个对象,属于浅拷贝,而clone与...

网友评论

      本文标题:PHP魔术方法的使用

      本文链接:https://www.haomeiwen.com/subject/aozrtxtx.html