批改状态:合格
老师批语:其实这几个知识点, 还是很抽象的, 挺难懂的, 如果你一遍就过, 真是不简单
//定义一个基类class A {public static $name = '小明';public static function sayName() {return '我的名字叫'.static::$name;}}//定义一个扩展类class B extends A {public static $name = '小红';}//客户端代码echo B::sayName();//调用B类继承自A类的sayName方法,绑定的是B类的环境

//定义一个工作类class SetPersonInfo {function __construct($name, $sex, $age){$this->name = $name;$this->sex = $sex;$this->age = $age;}}//客户端代码$p1 = new SetPersonInfo('小明', '男', 18);echo $p1->name;echo $p1->sex;echo $p1->age;echo '<br>';$p1 = new SetPersonInfo('小红', '女', 17);echo $p1->name;echo $p1->sex;echo $p1->age;

//定义一个工作类class Person {//定义一个私有属性:用于演示属性查询和检测拦截器private $name;//定义一个私有属性:用于演示属性设置和销毁拦截器private $age;//初始化$name属性public function __construct($name){$this->name = $name;}//设置属性查询拦截转发器public function __get($property){//事先约定一些方法用于处理属性访问$method = 'get' . ucfirst($property);//转发访问请求return method_exists($this, $method) ? $this->$method() : null;}//处理属性访问的方法1public function getName() {return mb_substr($this->name, 0);}//处理属性访问的方法2public function getAge() {return $this->age;}//设置属性设置拦截转发器public function __set($property, $value){//事先约定一些方法用于处理属性设置$method = 'set' . ucfirst($property);//转发访问请求return method_exists($this, $method) ? $this->$method($value) : null;}//处理属性设置的方法public function setAge($value) {$this->age = $value;}//设置属性检测拦截转发器public function __isset($property){//返回检测结果return $property === 'name' ? isset($this->name) : false;}//设置属性销毁拦截转发器public function __unset($property){//进行销毁处理if ($property === 'age') {unset($this->age);}}}//客户端代码$p1 = new Person('小明');//定义一个对象echo $p1->name; //访问私有属性触发查询拦截转发器$p1->age = 18; //设置私有属性触发设置拦截转发器echo $p1->age; //访问私有属性触发查询拦截转发器echo isset($p1->name) ? '存在' : '不存在';//检测私有属性触发检测拦截器unset($p1->age); //删除私有属性触发删除拦截器echo $p1->age; //访问私有属性触发查询拦截转发器,发现没有值返回

//定义一个工作类class Person {//定义普通方法拦截器public function __call($name, $arguments){printf('方法名: %s , 参数: [%s]', $name, implode(', ', $arguments));}//定义静态方法拦截器public static function __callStatic($name, $arguments){printf('静态方法名: %s , 参数: [%s]', $name, implode(', ', $arguments));}}//客户端代码$p1 = new Person();$p1->getName('小明', '小红', '小王', '小倩');echo '<br>';Person::getName('小明', '小红', '小王', '小倩');

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号