brightnucleus / namespace-backtracer
获取调用对象的命名空间。
v0.1.1
2016-06-18 08:44 UTC
Requires (Dev)
- phpunit/phpunit: ~4
This package is auto-updated.
Last update: 2024-09-16 06:07:44 UTC
README
通过扫描调试回溯,跳过已知的一组命名空间和函数,获取调用对象的命名空间。
目录
概述
这个类/特性允许你遍历 debug_backtrace()
来找出调用类/函数或调用命名空间。这在需要运行时确定给定方法调用上下文的情况下非常有用。
安装
安装此包的最佳方式是通过 Composer
composer require brightnucleus/namespace-backtracer
基本用法
设置
要创建一个新的类以获取调用者的名称或命名空间,你可以扩展 BrightNucleus\NamespaceBacktracer\NamespaceBacktracerClass
类,或者如果你已经有了一个需要扩展的类,你可以导入 BrightNucleus\NamespaceBacktracer\NamespaceBacktracerTrait
特性。
在两种情况下,你可能需要重写一个或多个方法,以根据你的环境调整行为
getIgnoredInterfaces()
这会获取遍历回溯时要忽略的接口/类列表。
getIgnoredFunctions()
这会获取遍历回溯时要忽略的函数列表。
getGlobalNamespace()
这定义了全局命名空间如何用字符串表示。
调用
要获取特定调用的调用者命名空间,将执行在被调用者内部执行的 debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)
的输出传递给 getCallingNamespace()
方法。如果你不提供 debug_backtrace
输出,它将在这个特性中获取(可能不同于你想要检查的环境)。
示例
<?php namespace CalleeNamespace { use BrightNucleus\NamespaceBacktracer\NamespaceBacktracerTrait; class Callee { use NamespaceBacktracerTrait; protected function getIgnoredInterfaces() { return [ 'CalleeNamespace\Callee', ]; } public function calledFunctionGetCaller() { echo $this->getCaller(); } public function calledFunctionGetNamespace() { echo $this->getCallingNamespace(); } } } namespace CallerNamespace { use CalleeNamespace\Callee; class Caller { public function callingFunctionGetCaller() { $callee = new Callee(); $callee->calledFunctionGetCaller(); } public function callingFunctionGetNamespace() { $callee = new Callee(); $callee->calledFunctionGetNamespace(); } } } $caller = new CallerNamespace\Caller(); // This will echo "CallerNamespace\Caller" from within the // CalleeNamespace\Callee\calledFunction() method. $caller->callingFunctionGetCaller(); // This will echo "CallerNamespace" from within the // CalleeNamespace\Callee\calledFunction() method. $caller->callingFunctionGetNamespace();
贡献
欢迎所有反馈/错误报告/拉取请求。
许可证
版权所有(c)2016 Alain Schlesser,Bright Nucleus
此代码根据 MIT 许可证 许可。