PHP MVC模型与继承


PHP MVC Model with 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坐标等将被放置在对象中,而所有特定的东西将被放置在子类中。

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

然而,框架给了我艰难的时间去尝试并使它工作…这让我觉得,我可能做错了什么,因为如果每个人都这样做,那么,我想,框架会很容易支持。

任何想法吗?

您不应该这样做。你违反了Liskov替换原则(快速图片解释它),它基本上说你应该能够用父类的实例替换任何子类的实例。

注:这只是我的观点,但我要警告你远离你提到的两个框架。它们都有重大的设计缺陷和其他问题。(如果需要详细信息,请访问PHP聊天室..没有必要在这里煽风点火)

如果你认为每个框架都滚动自己的ORM,那么你的问题是有意义的。然而,我认为Symfony的想法是正确的:与优秀的、独立维护的ORM系统集成,这样核心团队就可以专注于框架本身。

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