我正在通过编写自己的“简单”CMS 系统来扩展我的 php 和一般编码知识。
我的数据库结构如下:
USERS --< WEBSITES --< PAGES
在我的逻辑中,我有三个类,aUser
和Website
类Page
。未继承
该类User
具有USER TABLE
加一个属性的所有$_website
属性,
该类具有对象Website
的所有属性WEBSITE TABLE
加上一个 ARRAYPage
我决定这样做的方式是,在页面加载时,将创建这些类并用数据库数据填充。
因此,在 html 中,我可以简单地通过调用类来回显结果,如下所示:
$USER -> name;
$USER -> website -> get_pages();
$USER -> website -> pages[0] -> get_header();
我意识到这些类可以被继承,所以Page
继承Website
和Website
继承User
但是如果我这样做,那么我将Page
像这样实例化该类:
$PAGES = array();
$PAGES[] = new Page( $constructor_data_to_construct_user_website_and_page );
现在,如果我这样做,该对象$PAGES[0]
将具有与该页面有关的所有信息,与网站有关的所有信息(第一个父级),以及与用户有关的所有信息(第二个父级)
如果我再创建另一个Page
,我只是复制相同的User
细节Website
是吗?
因此,如果我要var_dump $PAGES[0]
获取所有相关信息,USER,
WEBSITE
并且PAGE
如果我要var_dump $PAGES[1]
获得USERS
AND的所有相同信息WEBSITE
,但只是不同的Page
数据。
因此,继承会导致不必要的用户和网站对象复制
因为我基本上可以做到:
$PAGES[0] -> username // username is a property of the Users class
$PAGES[1] -> username
两者都将返回完全相同的值。
这肯定很糟糕,因为数据被不必要地复制了!
这个对吗?
或者这个问题是一堆垃圾,而不是使用这种情况inheritance
?