批改状态:合格
老师批语:
(1)属性重载
class User{// 属性private $data = ['age'=>20];// 查询拦截器public function __get($name){// $name :属性名if(array_key_exists($name,$this->data)){return $this->data[$name];}return "属性 {$name} 不存在";}}$user = new User;echo $user->name.'<hr>';echo $user->age.'<hr>';

// 更新拦截器public function __set($name,$value){// 1. 有没有这个属性?if(array_key_exists($name,$this->data)){// 2. 这个值是否合法?if($name === 'age'){if($value>=18 && $value<=59){$this->data[$name] = $value;}else{echo '年龄必须在18-59之间';}}else{// 以上操作仅对age有效,其他属性之间赋值$this->data[$name] = $value;}}else{echo '禁止动态创建属性';}}/*** 为一个属性赋值的时候,必须要搞清楚2件事* 1. 有没有这个属性?* 2. 这个值是否合法?*/$user->age = 29;echo $user->age . '<hr>';$user->age2 = 18;echo $user->age2.'<hr>';echo '<hr color=red>';

(2)方法重载
// 方法拦截器public function __call($name,$args){// $name:方法名,$args:传给方法的参数printf('方法:%s<br>参数:<pre>%s</pre>',$name,print_r($args,true));}// 常规方法/非静态方法/用实例调用$user->hello('张三','hello World');echo '<hr>';

// 静态方法拦截器public static function __callStatic($name,$args){// $name:方法名,$args:传给方法的参数printf('方法:%s<br>参数:<pre>%s</pre>',$name,print_r($args,true));}User::world(100,200);

(1)命名空间
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号