0

我有一个我制作的记录器类,但我不确定哪个是实现它的最佳方式。

此类中的write()方法需要能够从应用程序中每个类中的任何方法调用。

以前我在做 Logger::write() 将方法作为静态方法。它既快速又简单,但我觉得这不是最好的方法。

我是否应该将记录器类的实例注入我的其他对象(通过构造函数或设置器方法),然后当我需要写入日志时调用它:

$this->logger->write()
4

3 回答 3

1

如果您public static function write()不需要访问 logger 类中的任何属性或方法,那么绝对没有理由不将其设为静态。(如可通过 Logger::write() 访问。如果没有适当的理由,强制初始化对象是多余的。

于 2012-12-15T18:46:57.480 回答
1

这实际上取决于您希望如何使用该类。

如果您不需要实例来使用该方法,则将该方法定义为静态并静态调用它Logger::write(),这很好。

但是,如果您需要一个实例,那么您将需要决定如何在整个代码中使用该实例。例如,您可以使用依赖注入将实例传递给需要它的代码。这就是我建议你这样做的方式。

于 2012-12-15T18:47:57.247 回答
0

为什么你希望它在每个对象中都可用?到处注入看起来很繁琐,也不是很实用。如果您需要在静态方法、常规函数或全局范围内记录某些内容怎么办?

或者简单地说:打电话有什么问题Logger::write()?也许你是想多了?

于 2012-12-15T18:49:10.350 回答