【发布时间】:2012-12-22 11:58:59
【问题描述】:
我想知道 PHP 是否提供了一种本地方式来检查一个类(实例)是否属于某个命名空间。
这并不重要,只是为了让您了解我是如何提出这个问题的:
使用 ZF2,我为onDispatch 事件提供了一个事件处理程序。但是,对于任何模块的任何控制器的每次调度都会调用此处理程序。显然,如果正在调度 this 模块的控制器,我只想在此处理程序中执行一个操作。
所以我想检查 Controller 是否在我的模块的命名空间内。
顺便说一句,我在类名 (strpos($className, 'ModuleName\Controller') !== false) 上使用字符串比较暂时解决了这个问题。我想使用substr() 或strncmp() 或类似的东西比strpos() 表现更好,但在我的情况下并不重要。
提前致谢!
// 编辑:为了清楚起见,我正在寻找类似的东西:
// $foo is an instance of MyApp\Controller\Moo
is_in_namespace('MyApp\Controller', $foo); // true
或
// $foo is an instance of MyApp\Controller\Moo
get_namespace($foo) === 'MyApp\Controller'; // true
【问题讨论】:
-
@JasonMcCreary 你能解释一下我的问题与你链接的问题有什么关系吗?
-
嗯,它是一个给定类的命名空间......你读过它还是根据标题判断它?似乎适用,看看下面的两个答案是该问题的相同答案。
标签: php oop namespaces