从另一个范围使用魔术常量(Using magic constants from another sc

2019-10-18 03:43发布

我创建了一个类Debug中,所有属性和方法都是静态的。 使用后期静态绑定我使用这个类作为正在做什么记录,并在这一刻(其实我现在测试的性能问题,所以我想现在什么时候去)。

因此,在目前我有像每类各主要方法的东西Debug::log(__CLASS__ . '::' . __METHOD__); 。 在Debug::log()方法,我可以添加时间并将其存储在一些阵列。

如果我想有一天改变自己的行为,我需要改变大量的代码在许多文件...

我的问题是:是否有可能以某种方式忽略这些__CLASS__ . '::' . __METHOD__ __CLASS__ . '::' . __METHOD__ __CLASS__ . '::' . __METHOD__Debug::log()方法会知道从哪个类和哪个方法它叫什么名字?

调用堆栈可能?

Answer 1:

您正在寻找的功能是debug_backtrace() ; 它会给你,你可以使用用于此目的的数据结构。 有没有办法让魔术常量工作方式,虽然我同意这一观点,你可能会考虑发布一个功能要求,允许在函数定义作为默认值魔术常量在通话时进行评估,不能确定时间。 我会支持这样的功能要求。



Answer 2:

日志记录你在做看起来像一个反映一种记录,而不是基于实物方面的记录。

你可以得到真正的远与依赖注入。 添加了不同种类的东西,你想被记录,即记录器。 入侵错误密码,邮件日志等。

在我看来,这并没有多大意义,反思一种记录的,这需要你暴露过多的内部机制。

如果你只是想要一个堆栈跟踪发生错误时使用Exception->getTrace



文章来源: Using magic constants from another scope