属性重载:当访问一个不存在或者权限不够的属性的时候,能够触发一系列的魔术方法,就叫做属性重载 __get():获取不存在或者权限不够的属性的时候会自动触发
<?php header(‘Content-type:text/html;charset=utf-8‘); echo ‘<pre>‘; //PHP属性重载 class Person{ //属性 public $name; protected $money; private $age; //构造方法 public function __construct($name,$money,$age){ $this->name = $name; $this->age = $age; $this->money = $money; } //增加一个魔术方法__get //__get方法必须要一个参数,需要访问的属性的名字 public function __get($name){ //var_dump($name); $allow = array(‘money‘,‘age‘); //让用户访问 //如果用户访问的是money和tail,那么就帮助用户去访问,如果是其他返回FALSE if(in_array($name,$allow)){ return $this->$name; //$name叫做可变变量 }else{ //不存在 return false; } } } //实例化 $person = new Person(‘马浩洋‘,6000,28); //访问个人信息 echo $person->name; //可以,访问公有属性 //echo $person->age; //不可以,age是私有属性,且Person类没有__get方法 //Person类增加__get方法之后 echo $person->age; //访问一个不存在的 var_dump($person->tail);
意义:
1、增加代码容错性
2、控制用户访问
时间: 2024-10-06 18:22:56