PHPが、クラス(インスタンス)が特定の名前空間に属しているかどうかをチェックするネイティブな方法を提供しているかどうか疑問に思います。
それは実際には重要ではありませんが、私がこの質問をどのように思いついたのかを理解するためだけに:
ZF2を使用して、イベントのイベントハンドラーを取得しましたonDispatch
。ただし、このハンドラーは、任意のモジュールの任意のコントローラーがディスパッチされるたびに呼び出されます。明らかに、このモジュールのコントローラーがディスパッチされている場合にのみ、このハンドラーでアクションを実行したいと思います。
そこで、コントローラーがモジュールの名前空間内にあるかどうかを確認したかったのです。
ところで、私はクラス名()の文字列比較を使用してこれを一時的に解決しました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