独自の「シンプルな」CMSシステムを作成することで、PHPと一般的なコーディングの知識を広げています。
私のデータベース構造は次のとおりです。
USERS --< WEBSITES --< PAGES
私のロジックでは、、、およびクラスの3つのクラスがUser
ありWebsite
ますPage
。継承されません
User
クラスには、USER TABLE
プラス属性のすべての属性があり$_website
ます。
Website
クラスには、すべての属性に加えて、オブジェクトWEBSITE TABLE
の配列がありますPage
私がこれを実行することを決定した方法は、ページの読み込み時に、これらのクラスが作成され、データベースデータで埋められることです。
したがって、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]
には、そのページに関連するすべての情報、Webサイト(最初の親)に関連するすべての情報、およびユーザー(2番目の親)に関連するすべての情報が含まれます。
次に別のものを作成する場合、同じものと詳細をコピーPage
しているだけですはい?User
Website
だから私がvar_dump $PAGES[0]
IDを取得した場合、すべての情報を取得しUSER,
WEBSITE
、PAGE
IDの場合、 ANDのvar_dump $PAGES[1]
すべての同じ情報を取得しますが、データは異なります。USERS
WEBSITE
Page
したがって、継承は、ユーザーオブジェクトとWebサイトオブジェクトの不要なコピーを引き起こしています
私が本質的にできるので:
$PAGES[0] -> username // username is a property of the Users class
$PAGES[1] -> username
どちらもまったく同じ値を返します。
データが不必要にコピーされているので、これは確かに悪いことです!
これは正しいです?
それとも、この質問はゴミの山であり、これはそのような状況inheritance
が使用されているのではありませんか?