Php 在全局范围内访问类内的函数

Php 在全局范围内访问类内的函数,php,oop,Php,Oop,我想在全局范围内的调试类中调用dump方法。 像这样: class Debug { ... function dump($var) {} ... } dump('toto'); 所以我想在任何地方都打电话给dump,但我的班级不去 如果可能的话,我不想这么做: dump(var) { $debug = new Debug(); $debug->dump(var); } 有办法导出我的类的方法吗 对不起,我的英语不好。如果您只想格式化输出以转储它

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

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

dump('toto');
所以我想在任何地方都打电话给dump,但我的班级不去

如果可能的话,我不想这么做:

dump(var) {
    $debug = new Debug();
    $debug->dump(var);
}
有办法导出我的类的方法吗


对不起,我的英语不好。

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

class Debug {
    ...
    static function dump($var) {}
    ...
}
把它叫做:

Debug::dump('hola');
使用静态方法不是推荐的做法,但是,如果您对
Debug::Debug()
方法没有任何依赖性,并且只用于格式化或记录参数,那么使用它是没有问题的

已更新

由于
Debug
类是一个供应商类,您可以像Pimple一样使用PHPDI容器,因此在将
Debug
类注册为服务后,您可以到处调用它,但您需要将它注入所有需要调试的类中

如果您不想使用容器,那么使用静态方法扩展调试功能是一个肮脏的把戏,尽管我不推荐使用它,但我在这里粘贴了以下想法:

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

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

DebugExtended::myDump($debug);

这不是OOP的工作方式。您错过了封装背后的基本思想。如果需要全局函数,为什么要实现类?方法已经存在于供应商包中。我想知道我是否可以全局“导出”这个函数OOP背后的思想是封装内部代码,这样就可以保证不会从外部使用它。这样,特性或细节的内部实现与外部使用分离。这意味着内部实现可以被更改、修改、删除,而无需更改外部用途。没有“出口”,因为没有任何东西可以出口。内部方法是一个内部细节。从外部角度看,这不关你的事。谢谢你的回答,但我不能重写转储函数。它在供应商包中:/I在知道您不能更改供应商类后,我更新了上面的帖子