
批改狀態(tài):合格
老師批語(yǔ):命名空間不僅是代碼管理方式,也是自動(dòng)加載實(shí)現(xiàn)的基礎(chǔ)
1、自動(dòng)加載代碼
<?php
try{
spl_autoload_register(function($file){
// echo $file;
$path=str_replace('\\',DIRECTORY_SEPARATOR,$file);
$path=__DIR__.DIRECTORY_SEPARATOR.$path.'.php';
// echo $path;
require $path;
});
}catch(Exception $e){
echo $e->getMessage();
}
2、demo代碼
<?php
namespace
{
require 'autoload.php';
use lib\pub\Ab;
use lib\pub\Bc;
use lib\pub\Df as D;//別名的使用;
echo '自動(dòng)加載類:','<br>';
echo Ab::get(),'<br>';
echo Bc::get(),'<br>';
echo '別名的使用:',D::get(),'<hr>';
class A{
public static function get(){
return __METHOD__;
}
}
echo '非限定空間名稱(<code>A::get()</code>):'.A::get(),'<br>';
}
namespace A
{
class A{
public static function get(){
return __METHOD__;
}
}
echo '限定空間名稱(<code>B\A::get()</code>)'.B\A::get(),'<br>';
}
namespace A\B
{
class A{
public static function get(){
return __METHOD__;
}
}
}
namespace C
{
echo '完全限定空間名稱:'.'<br>';
echo '全局中的類(<code>\A::get()</code>):'.\A::get().'<br>';
echo 'A空間的類(<code>\A\A::get()</code>):'.\A\A::get().'<br>';
echo 'B空間的類(<code>\A\B\A::get()</code>):'.\A\B\A::get().'<br>';
}
3、代碼運(yùn)行結(jié)果
1、命名空間關(guān)鍵字:namespace
;命名空間一般寫在文檔首行;
2、命名空間兩種形式:namespace name;
和namespace name{}
;
第二中國(guó)形式可以命名匿名空間(也叫全局空間)
3、全局成員:類、函數(shù)、常量、接口
4、命名空間訪問(wèn)形式:非限定名稱(A::get()
),限定名稱(B\A:get()
)和完全限定名稱(\A\A\B:get()
)
5、非限定名稱和限定名稱會(huì)自動(dòng)補(bǔ)充完成為完全限定名稱;
6、 use
用來(lái)聲明空間別名,use 默認(rèn)就是從根空開始;例如:use lib\pub\Df as D;
類別名與原始類名相同, 此時(shí)可以省略類別名;
7、自動(dòng)加載知識(shí)點(diǎn):spl_autoload_register()
;str_replace($seacher,$replace,$str)
;DIR魔術(shù)常量:獲取文夾所在目錄,DIRECTORY_SEPARATOR
:自適應(yīng)系統(tǒng)的目錄分隔符;
8、require '';
:加載腳本;
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)