php之属性重载和方法重载

<?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。 

 

 

 

posted @ 2016-06-13 21:19  尘梦  阅读(555)  评论(0编辑  收藏  举报