【发布时间】:2012-12-07 20:37:22
【问题描述】:
我正在开发一个注入 Logger 对象的服务,但我可以拥有 2 种不同类型的记录器,我计划拥有一个 syslog 记录器和一个队列消息系统记录器。这可能吗?
这个想法是有一个界面:
interface Loggable
{
public function log() ;
}
以及实现该接口的 2 个类:
class Syslogger implements Loggable
{
public function log()
{
...
}
}
class QMSLogger implements Loggable
{
public function log($queueName)
{
...
}
}
我能想到的唯一方法是将数组作为参数并在一个类上使用它而不在另一个类上使用......但这有点臭:P
【问题讨论】:
-
如果方法在一种情况下接受一个参数而在另一种情况下不接受,那就不是同一个接口!
-
是的,我想这是更正确的方法,但我希望能够注入任何一个类来更改日志系统......我想我错了
-
好吧,如果
$queueName默认为 NULL (public function log($queueName = null) {...}),这实际上是可能的,但我同意这里的 deceze。
标签: php interface dependency-injection