php类属性成员和方法重载
2015-06-11 11:51
746 查看
PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。
1.属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。
2.方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。
1.属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。
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;
2.方法的重载通过__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;
相关文章推荐
- ListView的LayoutParams设置
- 用ext_skel,实现一个PHP扩展,添加到PHP并调用
- php中smarty变量修饰用法实例分析
- php知识点
- php简单smarty入门程序实例
- FTP 实现跨服务器文件上传下载
- php类的静态单列模式的实现方法
- PhpStorm下Laravel代码智能提示
- Yii学习笔记之五(核心验证器 api 翻译)
- 关于PHP+Mysql1045 Access denied for user错误解决办法――你可能想不到的
- Sublime Text [Decode error - output not utf-8]
- php调试函数xdebug_debug_zval和debug_backtrace(需要安装xdebug)x
- php判断一个值是否在一个数组中,区分大小写-也可以判断是否在键中
- IIS6.0搭建FTP服务器,以及建立多用户FTP
- ContentProvider
- setprecision(int n)等格式函数用法
- setprecision(int n)等格式函数用法 分类: POJ 2015-06-11 10:56 17人阅读 评论(0) 收藏
- PHP设计模式——职责链模式
- vsftp
- laravel5.0升级到5.1