全局范围内的类内部访问功能

时间:2018-03-11 15:50:15

标签: php oop

我想在全局范围的Debug类中调用我的dump方法。 像这样:

class Debug {
    ...
    function dump($var) {}
    ...
}

dump('toto');

所以我想把垃圾转移到所有地方但是保持我的班级。

如果有可能,我不想这样做:

dump(var) {
    $debug = new Debug();
    $debug->dump(var);
}

有没有办法导出我班级的方法?

抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

如果您只想格式化输出以进行转储,则可以使用静态方法:

class Debug {
    ...
    static function dump($var) {}
    ...
}

并称之为:

Debug::dump('hola');

使用静态方法不是推荐的做法,但是,如果您不依赖于Debug::debug()方法,并且您将仅用于格式化或记录参数,那么就没有问题。用它

<强>更新

由于Debug类是供应商类,您可以使用像Python https://pimple.symfony.com/这样的PHP DI容器,因此在将Debug类注册为服务后,您可以随处调用它,但是您需要在所有需要调试的类中注入它

如果你不想使用容器,那么使用静态方法扩展调试功能是一个肮脏的技巧,但是我不推荐它,我在这里粘贴这个想法:

class Debug {
    function dump($var) {
        echo $var;
    }
}

class DebugExtended {
    static function myDump($var) {
        $debug = new Debug();
        $debug->dump($var);
    }
}

DebugExtended::myDump($debug);