批改状态:合格
老师批语:准确来讲,php中没有真正意义上的重载 ,其实重载是把双仞剑
重载是指:当对一个对象或类使用其未定义的属性或方法的时候,其中的一些“处理机制”;
对一个对象的不存在或者私有属性进行使用的时候,在类中预先设定好的应对办法
当对一个对象的不存在的属性进行“取值”的时候,就会自动调用内部方法:__GET()
class Demo{private $money = 100;public function __get($name){echo '访问的属性不存在或权限不够!';}}$demo = new Demo;echo $demo->money;

当对一个对象的不存在的属性进行“赋值”的时候,就会自动调用内部方法:__SET()
class Demo1{private $arr_list = [];public function __set($name, $value){return $this->arr_list[$name] = $value;}}$demo = new Demo1;echo $demo->money = 2000;

当对一个对象的不存在的属性进行isset()判断的时候,就会自动调用内部方法:__isset()
class Demo1{private $arr_list = [];public $age = 1;public function __set($name, $value){return $this->arr_list[$name] = $value;}public function __isset($name){$age = isset($this->arr_list[$name]);return $age;}}$demo = new Demo1;echo $demo->money = 2000, '<br>';$demo1 = isset($demo->age);var_dump($demo1);

当对一个对象的不存在的属性进行unset()销毁的时候,就会自动调用内部方法:__unset()
class Demo1{private $arr_list = [];public $age = 1;public function __set($name, $value){return $this->arr_list[$name] = $value;}public function __isset($name){$age = isset($this->arr_list[$name]);return $age;}public function __unset($name){unset($this->arr_list[$name]);}}$demo = new Demo1;echo $demo->money = 2000, '<br>';$demo1 = isset($demo->age);var_dump($demo1);echo '<br>';unset($demo->age);var_dump($demo2);

当对一个对象的不存在的实例方法进行“调用”的时候,会自动调用类中的__call()这个魔术方法;
class Demo{private $age;public function __call($name, $value){echo '方法被调用';}}$demo = new Demo;// tell()方法不存在$demo->tell();

全局成员有常量、函数、类,不能重复定义或者更新
const MAN = ‘jack’
function username()
{
echo ‘name is jack’;
}
class Demo
{
private $age;
}
//全局空间namespace {class Demo{private $age;}// 访问当前空间echo Demo::class, '<br>';// 访问name1空间echo \name1\Demo::class, '<br>';// 访问name2空间echo \name1\name2\Demo::class, '<br>';}//父空间namespace name1 {class Demo{private $age;}}//子空间namespace name1\name2 {class Demo{private $age;}}

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