程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> PHP命名空間解析規則

PHP命名空間解析規則

編輯:PHP基礎知識
 

在手冊中可以發現這麼一段代碼,故手冊中其他關於namespace的內容,就可以忽略了,直接看下面的代碼!
 

 

<?php
namespace A;
use B\D, C\E as F;
   
// 函數調用
   
foo();      // 首先嘗試調用定義在命名空間"A"中的函數foo()
            // 再嘗試調用全局函數 "foo"
   
\foo();     // 調用全局空間函數 "foo" 
   
my\foo();   // 調用定義在命名空間"A\my"中函數 "foo" 
   
F();        // 首先嘗試調用定義在命名空間"A"中的函數 "F" 
            // 再嘗試調用全局函數 "F"
   
// 類引用
   
new B();    // 創建命名空間 "A" 中定義的類 "B" 的一個對象
            // 如果未找到,則嘗試自動裝載類 "A\B"
   
new D();    // 使用導入規則,創建命名空間 "B" 中定義的類 "D" 的一個對象
            // 如果未找到,則嘗試自動裝載類 "B\D"
   
new F();    // 使用導入規則,創建命名空間 "C" 中定義的類 "E" 的一個對象
            // 如果未找到,則嘗試自動裝載類 "C\E"
   
new \B();   // 創建定義在全局空間中的類 "B" 的一個對象
            // 如果未發現,則嘗試自動裝載類 "B"
   
new \D();   // 創建定義在全局空間中的類 "D" 的一個對象
            // 如果未發現,則嘗試自動裝載類 "D"
   
new \F();   // 創建定義在全局空間中的類 "F" 的一個對象
            // 如果未發現,則嘗試自動裝載類 "F"
   
// 調用另一個命名空間中的靜態方法或命名空間函數
   
B\foo();    // 調用命名空間 "A\B" 中函數 "foo"
   
B::foo();   // 調用命名空間 "A" 中定義的類 "B" 的 "foo" 方法
            // 如果未找到類 "A\B" ,則嘗試自動裝載類 "A\B"
   
D::foo();   // 使用導入規則,調用命名空間 "B" 中定義的類 "D" 的 "foo" 方法
            // 如果類 "B\D" 未找到,則嘗試自動裝載類 "B\D"
   
\B\foo();   // 調用命名空間 "B" 中的函數 "foo" 
   
\B::foo();  // 調用全局空間中的類 "B" 的 "foo" 方法
            // 如果類 "B" 未找到,則嘗試自動裝載類 "B"
   
// 當前命名空間中的靜態方法或函數
   
A\B::foo();   // 調用命名空間 "A\A" 中定義的類 "B" 的 "foo" 方法
              // 如果類 "A\A\B" 未找到,則嘗試自動裝載類 "A\A\B"
   
\A\B::foo();  // 調用命名空間 "A\B" 中定義的類 "B" 的 "foo" 方法
              // 如果類 "A\B" 未找到,則嘗試自動裝載類 "A\B"
?>


現在,當你看完是不是上面的代碼是不是恍然大悟了?要是還沒有開始大量接觸PHP面向對象的開發,就需要花點功夫看看了,畢竟這是傳說中的主流。
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved