1. 程式人生 > >PHP基礎篇--利用名稱空間解決類名問題

PHP基礎篇--利用名稱空間解決類名問題

//util.php
<?php
namespace com\instance\util;
class Debug{
  static function sayHello(){
      print("Hello,".__NAMESPACE__."\n");
  }
}
//main.php
namespace main;
require_once "util.php";
use com\instance\util;
class Debug {
   static function sayHello(){
      print("Hello,".__NAMESPACE__."\n");
   }
}
Debug::sayHello();
util\Debug::sayHello();

以上兩個語句分別輸出:

Hello,main

Hello,com\instance\util

所以在不同包名中得類名即使相同也不衝突。

有幾個要點需要注意:

1.在一個PHP檔案中,namespace語句必須放在第一句。可以測試如下:

<?php
require_once "util.php";
namespace main;
class Debug{}
報錯:

Namespace declaration statement has to be the very first statement in the script

2.對於不指定包名的PHP檔案,可以假定其位於根名稱空間的下。通過反斜槓來引用

//global.php
<?php
class Debug{
  static function sayHello(){
      print("Hello,".__NAMESPACE__."\n");
  }
}
//main.php
namespace main;
require_once "global.php";
class Debug {
   static function sayHello(){
      print("Hello,".__NAMESPACE__."\n");
   }
}
Debug::sayHello();
\Debug::sayHello();
輸出結果為:

Hello,main

Hello,