PHP面向对象1-重载overloading
2017-06-07 22:47
295 查看
PHP中的重载,并不是传统意义上的重载。
当程序中碰到未定义的属性或方法时,自动调用对应的方法进行处理,就是PHP中的重载!!!
链接:http://www.php.net/manual/zh/language.oop5.overloading.php
当程序中碰到未定义的属性或方法时,自动调用对应的方法进行处理,就是PHP中的重载!!!
链接:http://www.php.net/manual/zh/language.oop5.overloading.php
1.属性重载
__set(),__get(),__isset(),__unset()四个方法,分别用于赋值,取值,判断是否赋值,释放。1.__set()
赋值时,如果属性不存在,则自动调用该方法。private $data = array(); function __set($name, $value) { $this->data[$name] = $value; }
2.__get()
取值时,如果属性不存在,则自动调用该方法。private $data = array(); function __get($name) { if (array_key_exists($name, $this->data)) { return $this->data[$name]; } $trace = debug_backtrace(); trigger_error( 'Undefined property via __get(): ' . $name . ' in ' . $trace[0]['file'] . ' on line ' . $trace[0]['line'], E_USER_NOTICE); return null; }
3.__isset()
判断属性是否存在时,如果属性不存在,则自动调用该方法。private $data = array(); function __isset($name) { return isset($this->data[$name]); }
4.__unset()
释放属性时,如果属性不存在,则自动调用该方法。private $data = array(); function __unset($name) { unset($this->data[$name]); }
2.方法重载
__call(),__callStatic()总共2个方法,分别会在对象中调用不可访问方法时或在静态上下文中调用不可访问方法时被调用。1.__call()
在对象中调用一个不可访问方法时,__call() 会被调用。function __call($name, $arguments) { echo "Calling object method '$name' " . implode(', ', $arguments). "\n"; }
2.__callStatic()
在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用。function __callStatic($name, $arguments) { echo "Calling static method '$name' " . implode(', ', $arguments). "\n"; }
相关文章推荐
- PHP面向对象_重载(overloading)
- php面向对象之重载(overloading)
- php面向对象的方法重载两种版本比较
- PHP面向对象--重载
- php 面向对象的三大要素(封装、继承、多态)以及重写(override)和重载(overload)的举例说明
- PHP那些事:面向对象的方法重载
- php部分--面向对象三大特性-封装(另加连续调用的一个例子)、继承(重写、重载的例子)、多态;
- Laravel5.2之PHP重载(overloading)
- php 面向对象abstract,interface,重载,子类继承父类
- PHP面向对象之重写与重载-129
- php __call()的用法之面向对象重载
- 【PHP面向对象(OOP)编程入门教程】12.重载新的方法(parent::)
- PHP 面向对象的方法重载
- PHP面向对象之重写与重载
- PHP面向对象之重载
- php面向对象之重写与重载
- PHP 面向对象:方法重载
- PHP 面向对象的方法重载
- php面向对象(三),抽象类,抽象方法,接口及php的”重载“