PHP MVC模型有继承吗?

时间:2011-10-04 10:26:19

标签: php oop inheritance

我正在尝试将项目迁移到MVC框架(在CI和Yii之间做出决定)。

现在,为了论证,我有两个对象,文本和图像,我想基于对象类构建它。

父:

class Object() extends Somemodel{
protected $x;
protected $y;
protected $page;
...
methods()...
}

和孩子们:

class Image() extends Object{
protected $width;
protected $height;
...
methods()...
}

class Text() extends Object{
protected $text;
protected $font;
...
methods()...
}

现在据我所知,这是一个很好的方法,因为一些常见的函数,如获取x / y坐标等将被放置在Object中,而所有特定的东西都将被放置在子类中。

我希望在数据库中有一个表来存储Object。

然而框架让我很难尝试让它工作......这让我觉得,这可能是我做错了什么,因为如果每个人都这样做,那么,我想,框架会很容易支持

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

你不应该这样做。你违反了Liskov Substitution原则(quick picture to explain it),它基本上说你应该能够用父类的实例替换任何子类的实例。

P.S。这只是我的意见,但我会警告你远离你提到的两个框架。他们都有重大的设计缺陷和其他问题。 (如果您需要详细信息,请访问php chat房间..此处没有任何火焰点燃)

答案 1 :(得分:1)

如果想象每个框架都有自己的ORM,那么你的问题就有意义了。但是我认为Symfony有正确的想法:与良好的,单独维护的ORM系统集成,以便核心团队可以专注于框架本身。

所以我会看看Propel或Doctrine(两者都维护得很好,并且都支持模型继承),然后选择你的框架,根据它提供与你选择的ORM的良好集成。