调试类为单例?

时间:2015-07-05 17:29:10

标签: php

我的问题很简单:我应该将我的Debug课程创建为单身人士吗?

我知道the singleton pattern is a bad practice,但调试类不参与应用程序中的逻辑,它会使整个应用程序复杂化,将调试类注入每个类。

我的调试类将包含以下方法:

Debug::message();
Debug::dump();
Debug::spot(); // To create a timeline
// etc

还应该注意我使用the debugbar package,并且它只会出现在开发模式下,所以我的调试类将查看包是否存在,如果是,它会将信息传递给它否则,它将什么都不做(或者可能记录重要的事情)。

1 个答案:

答案 0 :(得分:1)

好的,所以你想做静态调用以避免抛出调试类的实例。有道理。

如果你想使用静态调用,那么单例的替代方法是编写一个只包含静态属性/方法的类。

您是为此还是为单身人士做出决定非常简单:此类是否具有内部状态和/或是否需要构造函数?例如,如果您打开日志文件或实例化其他对象,您肯定需要单例。

Singleton不满意,are good reasons for this。但是仍然存在一些有意义的情况并且是一种有效的方法。

您提到要创建时间轴,所以我猜您需要初始化时间戳。你有一个dump方法,所以我想你想收集某些信息以便以后转储它。这些东西通常是有状态的。

当然,你可以在每个公共方法的顶部调用某种Debug::init(),但那会比单身人士更愚蠢。

所以,在你的具体情况下,我猜单身确实有意义。