批改状态:合格
老师批语:
访问类中的属性或者方法,如果不存在或者受保护,会自动执行一个魔术方法。进而在魔术方法里对该访问请求进行过滤或者动态创建类属性和方法。
<?php//重载的魔术方法-属性重载 __get() __set() __isset() __unset()//重载的魔术方法-方法重载 普通方法__call() 静态方法__callStatic()class quanxian{private $manger = 'guanliyuan';public function __get($name){if ($name === $this->manger):return '可以继续浏览';else://动态生成方法名字$method = 'get'.ucfirst($name);return $this -> $method();endif;}public function getUser(){return'无权访问';}}$user = new quanxian();echo $user->guanliyuan;echo $user->user;
全局成员有三种:类、函数、常量,特点是不能重复声明。
<?php//类class Demo{}//常量const APPNAME = '微信';//函数function addName(){return '名字';}
<?phpnamespace C {class Banji{//...}//echo 'C\Banji'echo Banji::class;//访问全局空间成员前面要加\echo \Quanju::class;}namespace D {class Banji{//...}//echo 'D\Banji'echo Banji::class;}//全局空间namespace{class Quanju{static $name = '全局';}//echo 'Quanju'echo Quanju::class;}
//第一个文件,引用home1.php和home2.phpnamespace home;require 'home1.php';require 'home2.php';//第二个文件,home1.phpnamespace home;class Home1{//...}//第三个文件,home2.phpnamespace home;class Home2{//...}
<?phpnamespace C {class Banji{//...}//访问子类成员及子子类echo C1\Banji::class,'<br>';echo C1\C2\Banji::class,'<br>';}namespace C\C1 {class Banji{//...}//访问子类成员echo C2\Banji::class,'<br>';//访问父类成员echo \C\Banji::class,'<br>';}namespace C\C1\C2 {class Banji{//...}//访问父类成员及父父类echo \C\Banji::class,'<br>';echo \C\C1\Banji::class,'<br>';}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号