我不認爲你可以做這種事情使用::
;但它應該,如果你使用了命名空間分隔符的工作:\
我只是用PHP PHP 5.3.5測試 - 使用::
確實讓我一個錯誤。
使用\,另一方面,工作正常(請參閱下面的示例)。
例如,在全局命名空間是(不在任何具體命名空間)你可以定義一個類SomeClass
:
namespace {
class SomeClass
{
public function method() {
var_dump("child: " . __METHOD__);
}
}
$obj = new SomeNamespace\SomeClass();
$obj->method();
}
而且,在我的例子稱爲SomeNamespace
一個特定的名稱空間,您可以定義一個類SomeClass
,該類將從全局命名空間擴展該類 - 可訪問爲\SomeClass
:
namespace SomeNamespace {
class SomeClass extends \SomeClass
{
public function method() {
var_dump("parent: " . __METHOD__);
}
}
}
旁註:在這裏,我已經使用bracketed syntax,因爲我把代碼的兩個部分在同一個文件(見例3該手冊頁) - 但它應該與幾個文件一樣工作。
注意,對於PHP 5.3的第一個Alpha版本,命名空間分隔符不\
,但::
所以,如果你正在使用PHP 5.3的α1或2 (也許3,不知道如果\
之前或之後選擇3),使用::
可能工作。
(當然,你不應該使用的α - 尤其是考慮到已經有PHP 5.3的穩定版本了兩年)
它執行沒有錯誤?你確定這兩個類都在同一個命名空間嗎? – zzzzBov
好問題!從來沒有見過這樣的代碼。要麼以前的員工是天才,要麼是瘋子。 – GordonM
我不願意在這個時候執行這個類。但是,是的!有一行在類定義之上定義了一個名稱空間(我更新了這個問題以反映這一點)。 –