在編程的時候遇到這樣一個關於命名空間的問題,先上代碼:
namespace Test { class Test {}}namespace Chou { use Test\Test; class Mee { public $class = 'Test'; public function getClass() { return new $this->class(); } } $tmp = new Mee(); $tmp->getClass();}
我試圖在getClass方法中通過變數動態執行個體化另一個命名空間的類,但是觸發了“Class not found”錯誤。我覺得時$class變數的問題,所以又把測試代碼簡化了一下:
namespace Chou { use Test\Test; $test = 'Test'; $tmp = new $test();}
果然出現了和預期一樣的錯誤。我知道可以通過完整方式來解決,但是我仍然想明白這是什麼原理,還望高手解惑。
是我自己疏忽了,在手冊中找了命名空間和動態語言特徵。
回複內容:
在編程的時候遇到這樣一個關於命名空間的問題,先上代碼:
namespace Test { class Test {}}namespace Chou { use Test\Test; class Mee { public $class = 'Test'; public function getClass() { return new $this->class(); } } $tmp = new Mee(); $tmp->getClass();}
我試圖在getClass方法中通過變數動態執行個體化另一個命名空間的類,但是觸發了“Class not found”錯誤。我覺得時$class變數的問題,所以又把測試代碼簡化了一下:
namespace Chou { use Test\Test; $test = 'Test'; $tmp = new $test();}
果然出現了和預期一樣的錯誤。我知道可以通過完整方式來解決,但是我仍然想明白這是什麼原理,還望高手解惑。
是我自己疏忽了,在手冊中找了命名空間和動態語言特徵。
手冊裡有寫,在變數中使用命名空間必須使用完全限定名稱,規定如此。
http://php.net/manual/zh/language.nam...