我有一个我制作的记录器类,但我不确定哪个是实现它的最佳方式。
此类中的write()
方法需要能够从应用程序中每个类中的任何方法调用。
以前我在做 Logger::write() 将方法作为静态方法。它既快速又简单,但我觉得这不是最好的方法。
我是否应该将记录器类的实例注入我的其他对象(通过构造函数或设置器方法),然后当我需要写入日志时调用它:
$this->logger->write()
我有一个我制作的记录器类,但我不确定哪个是实现它的最佳方式。
此类中的write()
方法需要能够从应用程序中每个类中的任何方法调用。
以前我在做 Logger::write() 将方法作为静态方法。它既快速又简单,但我觉得这不是最好的方法。
我是否应该将记录器类的实例注入我的其他对象(通过构造函数或设置器方法),然后当我需要写入日志时调用它:
$this->logger->write()
如果您public static function write()
不需要访问 logger 类中的任何属性或方法,那么绝对没有理由不将其设为静态。(如可通过 Logger::write() 访问。如果没有适当的理由,强制初始化对象是多余的。
这实际上取决于您希望如何使用该类。
如果您不需要实例来使用该方法,则将该方法定义为静态并静态调用它Logger::write()
,这很好。
但是,如果您需要一个实例,那么您将需要决定如何在整个代码中使用该实例。例如,您可以使用依赖注入将实例传递给需要它的代码。这就是我建议你这样做的方式。
为什么你希望它在每个对象中都可用?到处注入看起来很繁琐,也不是很实用。如果您需要在静态方法、常规函数或全局范围内记录某些内容怎么办?
或者简单地说:打电话有什么问题Logger::write()
?也许你是想多了?