【发布时间】:2011-08-26 14:27:10
【问题描述】:
我正在尝试使用 DI 将一个对象放入另一个对象中。这很容易使用界面和类型提示。
问题是我正在注入的对象返回另一个具有预期方法之一的对象,并且该对象无法进行类型提示。问题看起来像这样。
class Db implements DbInterface {
public function query($query) {
return new Result($query);
}
}
interface DbInterface {
public function query($query);
}
class Result {
public function getRow() {
// get row here
}
}
class SomeClass {
protected $data;
// injection is here
public function __construct(DbInterface $db) {
$result = $db->query($some_query);
$this->data = $result->getRow();
}
}
我可以确保我得到了正确的 DbInterface 对象,但是有没有办法确保该对象的 run() 方法返回正确的对象类型?我已经看过了,但找不到输入提示函数返回结果的方法。
这可能会导致稍后在更复杂的代码中出现问题。如果有人编写了 DbInterface 的新实现,如果没有办法强制执行,他们怎么知道 run 需要返回特定类型的对象?
【问题讨论】:
标签: php type-hinting