我正在尝试将项目迁移到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。
然而框架让我很难尝试让它工作......这让我觉得,这可能是我做错了什么,因为如果每个人都这样做,那么,我想,框架会很容易支持
有什么想法吗?
答案 0 :(得分:3)
你不应该这样做。你违反了Liskov Substitution原则(quick picture to explain it),它基本上说你应该能够用父类的实例替换任何子类的实例。
P.S。这只是我的意见,但我会警告你远离你提到的两个框架。他们都有重大的设计缺陷和其他问题。 (如果您需要详细信息,请访问php chat房间..此处没有任何火焰点燃)
答案 1 :(得分:1)
如果想象每个框架都有自己的ORM,那么你的问题就有意义了。但是我认为Symfony有正确的想法:与良好的,单独维护的ORM系统集成,以便核心团队可以专注于框架本身。
所以我会看看Propel或Doctrine(两者都维护得很好,并且都支持模型继承),然后选择你的框架,根据它提供与你选择的ORM的良好集成。