brightnucleus/namespace-backtracer

获取调用对象的命名空间。

v0.1.1 2016-06-18 08:44 UTC

This package is auto-updated.

Last update: 2024-09-16 06:07:44 UTC


README

Scrutinizer Code Quality Code Coverage Build Status Codacy Badge Code Climate

Latest Stable Version Total Downloads Latest Unstable Version License

通过扫描调试回溯,跳过已知的一组命名空间和函数,获取调用对象的命名空间。

目录

概述

这个类/特性允许你遍历 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 许可证 许可。