我很陌生'现代' php,因为我的日常工作是花在一个有10年历史的代码库上。我正在尝试自我提升,我正在编写一个演示应用程序,只是为了尝试实现一些现在在php中使用的更新和更好的实践。
我试图通过分离我的课程中的关注点来保持较低的依赖关系。但我认为,当我将debug
标志设置为on时,有一些全局可用的调试类会输出消息等会很好。例如
class Blah {
function getBlah($config) {
Debugger::message('start call to getBlah()');
if(empty($config['some_arg'])) {
Debugger::error('$config[some_arg] not passed to getBlah()');
return false;
}
Debugger::message('end call to getBlah()');
}
}
(这显然是一个非常人为的例子,但我试图展示我正在谈论的Debugger
课程。)
除了Debugger
成为这个Blah
课程的依赖关系的问题之外,感觉就像“老人”一样。我习惯的PHP。
我知道我可以将Debugger
类传递给Blah
类而不是假设它,但我需要对所有新类进行此操作。
这一切都只是感觉不对,我假设有更好的方法来处理这样的事情,我还不知道。任何建议。
PS我知道所有比我更好的新框架和组件,以及我应该如何使用它们。我理解并同意,我只是试图从头开始构建一些东西作为学习活动。
答案 0 :(得分:0)
使用您实例化的DI容器,并为您寻找范围。然后你引导它。它是确保DI的常用方法,您不需要重复自己。它不是一个框架,它是一个可以下载的小组件。我建议使用Laravel的Illuminate容器以方便使用
答案 1 :(得分:0)
刚才有一个想法:特质怎么样?我可以创建Debugger
作为特征而不是类。然后我想要使用调试器的任何类,我只需要添加一个use Debugger;
语句。
我认为在这种情况下,这似乎不如完整规模的DI复杂且开销小。