【发布时间】:2018-08-24 14:42:14
【问题描述】:
我有一堆数据库模型,它们都扩展了一个名为 myDBModel 的基类,类似于:
class myPostgresModel extends myDBModel
我正在构建一组与这些模型交互的类,它们都扩展了另一个名为 MyBaseParser 的基类。这些解析器类需要将 DB 模型作为参数,但它可以是任何可用模型。所以我把它定义为
class myBaseParser implements ParserInterface
{
public function doSomething(myDBModel $model){}
}
interface ParserInterface
{
public function doSomething(myDBModel $model);
}
然后
class myPostgresParser
{
public function doSomething(myPostgresModel $model) {}
如果我创建一个 postgres 解析器,并将 myPostgresModel 传递给 doSomething 方法,我会收到一个错误,因为它需要 myDBModel。 myPostgresModel 不应该被接受,因为它是 myDBModel 类的孩子吗?处理这种继承的正确方法是什么?
【问题讨论】:
-
能否提供一个实际的复制案例?这应该可以在 3v4l.org 之类的网站中复制
标签: php class inheritance