Code前端首页关于Code前端联系我们

正确理解PHP重载:通过魔术方法动态创建属性和类

terry 2年前 (2023-09-25) 阅读数 49 #后端开发

PHP重载与Java重载不同,不能混淆。 Java允许一个类中有多个同名函数,并且每个函数有多个参数,而PHP只允许一个函数同名。例如,Java 可以有多个构造函数,但 PHP 只能有一个构造函数。

PHP的重载是指通过魔术方法动态创建属性和类

●属性重载-__get和__set

●方法重载-__call和__callStatic例如Laravel属性重载,这使得代码更准确地说

$name = $request->name;

该属性在类中不存在,但通过魔术方法访问。具体实现如下

public function __get($key){
    return Arr::get($this->all(), $key, function () use ($key) {
        return $this->route($key);
    });
}

该实现方法的应用 非常广泛和简单的实现原理总结

class Foo{
    private $params = [];
    function __construct(array $params = []){
        $this->params = $params;
    }
    public function __set($name, $value){
        $this->params[$name] = $value;
    }
    public function __get($name){
        return $this->params[$name];
    }
    public function __isset($name){
        return isset($this->params[$name]);
    }
    public function __unset($name){
        unset($this->params[$name]);
    }
}

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门