标签:
<?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}\n" ;
}
//判断属性是否存在
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。
标签:
原文地址:http://www.cnblogs.com/mengluo/p/5582103.html