目前我正在研究处理PHP中依赖关系的几种方法 - 例如依赖注入,服务定位器模式以及这些的不同实现。
这个问题的一个常见问题是接口的使用。比方说我写了一个商店& amp;从某个地方检索一些数据(对于那个例子无关紧要):
class DataStuff
{
public function store($data)
{
// Do stuff
}
public function retrieve($id)
{
// Do other stuff
}
}
当我想让这个类可供其他开发人员使用或在其他项目中使用时,我已经读过它,建议使用一个接口,然后由我的实际类实现:
interface DataStuffInterface
{
public function store($data);
public function retrieve($id);
}
class DaDataStuff implements DataStuffInterface
{
// Same as above
}
为什么建议使用这样的界面?
我知道这与类型提示/依赖注入有关,因为像这样的东西可以用它完成,但我真的不明白:
public function __construct(DataStuffInterface $dataStuffInterface) {
// Do something here
}
我在哪里放置这样的代码 - 是否与工厂有关?为什么我不应该这样做:
public function __construct(DataStuff $dataStuff) {
// Do something here
}