我發現,通過使用::class
,我可以得到一個命名空間類的完全合格的類名:PHP動態確定完全合格的類名
namespace NameSpace {
class Foo { }
echo Foo::class;
}
// echoes 'NameSpace\Foo'
但我不能想出一個辦法做到這與一個可變的類名稱。試圖對待class
關鍵字就像一個靜態屬性似乎不工作:
namespace NameSpace {
class Foo { }
$className = 'Foo';
echo $className::class;
}
// Parse error: syntax error, unexpected 'class'
有誰知道它有可能得到完全合格的類名動態就像我試圖?
我希望能夠從目前的命名空間與外班要做到這一點:
namespace ReallyLongHardToWriteNameSpace {
class Foo { }
}
namespace NameSpace {
use ReallyLongHardToWriteNameSpace\Foo;
class Bar { }
echo Foo::class; // echoes 'ReallyLongHardToWriteNameSpace\Foo'
echo Bar::class; // echoes 'NameSpace\Bar'
foreach (['Foo', 'Bar'] as $className) {
echo $className::class; // Parse error: syntax error, unexpected 'class'
}
}
'get_class'和'ReflectionClass'都需要你已經知道完全合格的類名作爲它們的參數,這違背了目的...... – thanksd
見我的編輯表示,它在最高層 –