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"
但这是一种矫枉过正,因为我经常使用它(作为元编程的一种手段)。当我分析应用程序时,它实际上显示为瓶颈。有人想知道更有效的解决方案吗?
答案 0 :(得分:0)
至少
$class = \Foo\Bar\Baz::class;
$namespace = substr($class, 0, strrpos($class, '\\'));
应该更有效率。