我在使用來自命名空間的常量時遇到了一些問題。如果我定義常量並嘗試使用它,PHP似乎無法找到它。例如,在我和常量文件我的線沿線的代碼如下:命名空間常量和用作
namespace \my\namespace\for\constants;
const DS = DIRECTORY_SEPARATOR;
然後在消耗文件我有:
namespace \some\other\namespace;
use \my\namespace\for\constants\DS as DS;
echo (realpath (DS . 'usr' . DS 'local'));
然而,除了呼應「的/ usr /本地'如預期我得到以下通知和一個空字符串。
注意:未定義的常量DS的使用 - 假設 'DS'
如果我改變代碼如下:
use \my\namespace\for\constants as cns;
echo (realpath (cns\DS . 'usr' . cns\DS 'local'));
我得到預期的結果,但它顯然是一個相當不僅僅是能夠直接拉入常量,這不太方便。
你可以在命名空間中別名一個類/接口/特性,你是否也不能爲一個常量別名?如果你能做到,那麼如何?
命名空間和恆定的是不同的東西。 'use'命令映射命名空間,而不是常量。你可以使用一個定義宏,但我會考慮這種不好的風格:它會降低代碼的可讀性,因爲它不清楚'DS'是什麼解決的,它來自哪裏。 – arkascha