PHP类和对象之重载
2016-10-22 19:32
183 查看
PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。
方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。
class Car { private $ary = array(); public function __set($key, $val) { $this->ary[$key] = $val; } public function __get($key) { if (isset($this->ary[$key])) { return $this->ary[$key]; } return null; } public function __isset($key) { if (isset($this->ary[$key])) { return true; } return false; } public function __unset($key) { unset($this->ary[$key]); } } $car = new Car(); $car->name = '汽车'; //name属性动态创建并赋值 echo $car->name;
方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。
class Car { public $speed = 0; public function __call($name, $args) { if ($name == 'speedUp') { $this->speed += 10; } } } $car = new Car(); $car->speedUp(); //调用不存在的方法会使用重载 echo $car->speed;
相关文章推荐
- PHP类和对象之重载
- 面试题之 C++输出类对象时导致错误的去处运算符<< 的重载
- 面向对象中的重载、覆盖和隐藏
- C++ 重载调用操作符和函数对象
- 附录A培训实习生-面向对象基础方法重载(3)
- 派生类对象成员函数与基类成员函数的重载
- php面向对象基础概念(属性重载的魔术方法)__get(),__set(),__isset(),__unset()
- [2013-11-28]JAVA笔记_面向对象基础、方法重载
- 面向对象__阶段总结__【覆盖与重载的区别】【继承,多态的一些细节】
- boolan C++高级编程下(第二周)对象模型、const、new和delete及其重载
- PHP类和对象
- [对象和类型]6.方法的重载
- JavaScript中如何通过arguments对象实现对象的重载
- php 之 类,对象(三)多态性,函数重载,克隆
- php类和对象 :继承
- 面向对象重写(override)与重载(overload)区别
- 嵌入式软件开发培训笔记——Java第三天(方法重载、对象的构造与初始化过程分析、封装等)
- 创建子类对象时,父类构造函数中调用被子类重写的方法为什么调用的是子类的方法,而被子类重载的方法不会调用?
- 如何获取重载了operator &的类对象的实际地址?
- 面向对象重写(override)与重载(overload)区别