在PHP 5.5中获取类的命名空间的最有效方法是什么?

时间:2014-03-31 18:21:13

标签: php metaprogramming

PHP 5.5引入了一个整洁的class name resolution method using the ::class syntax。我想这让很多人的生活变得更轻松。它确实对我有用。

但现在我发现自己必须更进一步:获得某个类的命名空间。这不是一项艰难的编程任务。它可以通过字符串操作或数组来实现:

$parts = explode('\\', \Foo\Bar\Baz::class);
array_pop($parts);
return implode('\\', $parts); // returns "Foo\Bar"

但这是一种矫枉过正,因为我经常使用它(作为元编程的一种手段)。当我分析应用程序时,它实际上显示为瓶颈。有人想知道更有效的解决方案吗?

1 个答案:

答案 0 :(得分:0)

至少

$class = \Foo\Bar\Baz::class;
$namespace = substr($class, 0, strrpos($class, '\\'));

应该更有效率。