
批改狀態(tài):合格
老師批語:很棒
完全限定名稱:總是從全局空間開始,前面總是一個”\”,”\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.非限定名稱的類:Work
echo Work::class,'<hr>';
使用空間或類名的別名來簡化這種調用
空間級的別名:給空間起個別名,使用關鍵字use
namespace sn2;
class T1{}
namespace sn3;
// 使用空間或類名的別名來簡化這種調用
// 空間級的別名:給空間起個別名,使用關鍵字use
use \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 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號