2014-12-02 60 views
0

我搜索周圍,無法得到答案,所以我在這裏。PHP:如何從導入的命名空間動態創建類?

在我的PHP文件中,我導入了一些命名空間,後來我想動態地創建一個導入的類,但它不工作,似乎PHP必須需要完整的類路徑來動態創建類,只有導入的命名空間的別名不會這樣做。代碼示例:
use some\foo; //import foo class
$b = 'foo'; $fullpath_b = 'some\foo';
$fullpath_b::static_function(); //this will work $b::static_function(); //this will not work

我的問題是,我只有進口類「富」,而不是完整的路徑類的一些\富'的別名,我怎麼能得到「foo的全路徑名',這樣我就可以創建課程了嗎?如果我使用new ReflectionClass()來創建課程,它也需要一個完整的路徑。
注意:我不需要創建類的對象,只需要類。

感謝您的意見。

+0

我不認爲這是可能的。可能你需要找到另一種方法 - 可能是傳遞給'$ b'完整的命名空間或只是一些標誌,這取決於你將調用哪個方法。 – 2014-12-02 22:08:47

+0

謝謝!我知道現在不可能 – 2014-12-03 16:30:58

+0

我知道你有一個班的別名。在你的情況下,一些\ foo,但你需要真正的路徑。我假設你的例子不夠清楚,因爲別名和真名都是一樣的。萬一你的真實用例非常複雜,你可以看看這個:https://stackoverflow.com/questions/19870078/ph​​p-how-to-get-a-fully-qualified-class-name-from-an -alias – profimedica 2017-07-28 03:12:14

回答