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]);    }}

更多相关文章

  1. PHP 核心特性之匿名函数
  2. PHP中16个高危函数
  3. PHP中判断函数是否被定义的方法
  4. PHP函数类型声明总结
  5. 如何直接访问php实例对象的private属性
  6. php中按大小进行排序的函数有哪些
  7. Linux服务器查看 PHP 是否支持mail()函数方法
  8. Mac下使用php的error_log()函数发送邮件
  9. PHP 学习总结之函数

随机推荐

  1. android MotionEvent的相关的类的介绍
  2. Ubuntu 下android 开发遇到的各种问题
  3. Android初级教程启动定时器详解
  4. android developer 打不开 解决办法
  5. 日常收集的Android开发资料来源
  6. Android 字符串格式化 千位符
  7. android button自定义触摸前以及触摸时的
  8. android获取文件目录
  9. Android代码实现APK文件的安装与卸载
  10. Android(安卓)-- Camera源码简析,启动流程