<?php /** * * @authors Your Name (you@example.org) * @date 2016-06-13 20:40:19 * @version $Id$ */ //属性重载 class Student{ private $name; public $age; public $xuehao; public function __construct($name,$age,$xuehao) { $this->name=$name; $this->age=$age; $this->xuehao=$xuehao; } //当访问一个不存在的属性是自动 //读取不可访问属性的值或者不存在时 public function __Get($name) { return "属性不存在"; } //在给不可访问属性赋值或者不存在时 public function __Set($name , $value ) { @$this->data[$name]=$value; echo "Setting {$name} to {$value} " ; } //判断属性是否存在 public function __isset ($name) { var_dump($name); } //方法重载 public function __call($name,$value) { echo "方法不存在或不能被调用"; } //当对象转换为字符串时自动调用 public function __Tostring() { return $this->name; } } $p=new Student("a","10","20100"); echo $p;
PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法。我们是通过魔术方法(magic methods)来实现的。
当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。本节后面将使用"不可访问属性(inaccessible properties)"和"不可访问方法(inaccessible methods)"来称呼这些未定义或不可见的类属性或方法。
所有的重载方法都必须被声明为 public。