正确理解PHP重载:通过魔术方法动态创建属性和类
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前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。