批改状态:合格
老师批语:很棒
完全限定名称:总是从全局空间开始,前面总是一个”\”,”\A\B…”
// 命名空间的别名namespace sn1;class T1{}namespace sn2;class T1{}namespace sn3;// 从当前空间开始访问另一空间,应该从全局开始// 1.完全限定名称的类名:\ns1\T1,类似绝对路径echo \ns1\T1::class,'<hr>';

限定名称:类名总是会有一个或多个空间名称,但不是从全局开始,”A\B…”
namespace sn3;// \sn3\sub\Hello:完全限定名称的类名// 类名可以省略掉与当前空间名称相同的部分// 2.限定名称的类名:sub\Hello,理解成相对路径echo sub\Hello::class,'<hr>';namespace sn3\sub;class Hello{}

namespace sn3;class Work{}// 访问当前空间中的类,不需添加空间名称// 3.非限定名称的类:Workecho Work::class,'<hr>';

使用空间或类名的别名来简化这种调用
空间级的别名:给空间起个别名,使用关键字use
namespace sn2;class T1{}namespace sn3;// 使用空间或类名的别名来简化这种调用// 空间级的别名:给空间起个别名,使用关键字useuse \sn2 as S;echo S\T1::class,'<hr>';

类级的别名,给完全限定名称的类起个别名
// 2.类级的别名,给完全限定名称的类起个别名use \sn2\T1 as T;echo T::class,'<hr>';

// 如果别名与类名相同,可以省略as以后面的别名use \sn2\T1;echo T1::class,'<hr>';

namespace sn2;class T1{}namespace sn3;use \sn2\T1;echo T1::class,'<hr>';// 以下情况必须使用别名// 如果当前 类中也有一个与之同名的非限定的类,就不能省略别名class T1{}

类的自动加载
// 类的自动加载try{spl_autoload_register(function($class){$path = str_replace('\\',DIRECTORY_SEPARATOR,$class);$file = __DIR__ . DIRECTORY_SEPARATOR . $path . '.php';if(!(is_file($file) && file_exists($file)))throw new \Exception('不是文件名文件不存在');require $file;});} catch (Exception $e){die($e->getMessage());}use inc\lib\Test1;use inc\lib\Test2;use inc\lib\Test3;echo Test1::class,'<hr>';echo Test2::class,'<hr>';echo Test3::class,'<hr>';

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