命名空間的引入
呼叫類沒有指定名稱, 那麼就會使用當前檔案的命名空間相對路徑
// user.php
namespace
;class
user
}
// index.php
namespace
;use
;include
;class
test
}test:
:show()
;//user::show();
controller\user::
show()
;user:
:show()
;
絕對路徑
// article.php
namespace
article
;class
article
}
// index.php
namespace
;use
article\article
;include
;class
test
}//test::show();
\article\article::
show()
;// article\article::show
echo"";
// 第二種寫法, use article\article;
article:
:show()
;// article\article::show
函式和常量在命名空間的特殊性
函式
預設情況下, 現在當前命名空間下查詢是否有這個函式, 如果有就使用就近原則, 如果沒有就在全域性裡面查詢如果函式檔案有命名空間, 則呼叫函式需要加上命名空間
// ********************==第一種函式檔案沒有命名空間***********************************==
// helper.php
function
helper()
// index.php
namespace
;include
"helper.php"
;// 預設情況下, 現在當前命名空間下查詢是否有這個函式, 如果有就就近原則
// 如果沒有就在全域性裡面查詢
helper()
;
// ********************==第二種函式檔案有命名空間***********************************==
// helper.php
namespace
helper
;function
helper()
// index.php
namespace
;include
"helper.php"
;\helper\helper()
;
常量
預設情況下, 現在當前命名空間下查詢是否有這個常量, 如果有就使用就近原則, 如果沒有就在全域性裡面查詢使用define定義常量, 不受命名空間的限制
使用const定義常量, 受命名空間的限制
// *************************====define***********************************====
// helper.php
namespace
helper
;define
("name"
,"chenjiang");
// index.php
namespace
;include
"helper.php"
;echo
name
;// chenjiang
// *************************====const***********************************====
// helper.php
namespace
helper
;const
name
="chenjiang"
;// index.php
namespace
;include
"helper.php"
;echo
name
;// warning: use of undefined constant name - assumed 'name'
echo \helper\name
;// chenjiang
引入衝突解決
使用as取別名namespace
;class
user
}namespace
;class
user
}// index.php
namespace
;use
;use
as serveruser;
include
;include
;user:
:show()
;echo"";
// 第一種寫法::
show()
;echo"";
serveruser:
:show()
;自動載入
一般的自動載入是按照命名空間來匯入相應的目錄, 資料夾的命名大小寫注意使用函式方式目的: 使用某乙個類, 那麼類檔案就會自動載入進來
// boostrap.php
// ********************=使用函式的方式自動載入*************************=
spl_autoload_register
(function
($class))
;// index.php
namespace
;include
"bootstrap.php"
;use
;use
as serveruser;
user:
:show()
;echo"";
serveruser:
:show()
;
使用物件導向方式
// ********************=使用物件導向的方式自動載入*************************=
class
bootstrap
public
function
autoload
($class)}
bootstrap:
:boot()
;
使用composer方式
cd 到專案目錄composer init
修改composer.json檔案
composer install
如果後續又修改了composer.json檔案, 那麼就需要執行以下composer update 方法
// cd 到專案目錄
// composer init
// 修改 composer.json檔案, 新增自動載入選項],
"autoload":}
,"require":}
// composer install 就會生成 vender資料夾
// 如果後面修改了 composer.json 檔案, 那麼就要執行以下composer update命令, 這樣才能生效
// helper.php
function
show()
// index.php
namespace
;include
'vendor/autoload.php'
;// 引入自動載入檔案
use;
useas serveruser;
user:
:show()
;echo"";
serveruser:
:show()
;show()
;
參考文件: php 命名空間,PHP使用命名空間
介紹 命名空間中的類,函式或常量可以通過以下方式使用 在當前命名空間中使用類 指定相對於當前命名空間的命名空間 提供命名空間的全限定名稱 從當前命名空間 在此示例中,從test1.php載入了命名空間。沒有命名空間引用的函式或類名稱將訪問當前命名空間中的功能或類名稱 示例 test1.php nam...
php命名空間
namespace misszhou function var dump a 1 var dump var dump 1 表示呼叫全域性 解決常量的衝突問題 有點像子目錄的概念 namespace meizi 必須放第一行 include func.inc.php function one func...
php 命名空間
使用命名空間 別名 匯入,允許通過別名引用或匯入外部的完全限定名稱,是命名空間的乙個重要特徵。這有點類似於在類 unix 檔案系統中可以建立對其它的檔案或目錄的符號連線。所有支援命名空間的php版本支援三種別名或匯入方式 為類名稱使用別名 為介面使用別名或為命名空間名稱使用別名。php 5.6開始允...