2011-01-14 8 views
2

Was ist der beste Weg, um viele-zu-viele-Beziehungen in objektorientierten PHP zu gehen.Wie man viele-zu-viele Beziehungen mit OOPHP behandelt?

Wenn ich drei Tabellen, Bücher und Kategorien und die Join-Tabelle bookscategories (behandelt viele zu viele) habe, sollte ich ein Modell/Klasse namens bookcategories erstellen und alles, was mit der Buchkategorie Beziehung dort zu tun?

Meine spezifische Fragen in Bezug auf den Pseudo-Code unten sind:

  1. Habe ich die Methoden in die entsprechenden Klassen richtig zugeordnet?
  2. Gibt es eine bessere Möglichkeit, dies zu erreichen, die nicht sehr komplex ist?
  3. In welcher Klasse behandelt man die Verknüpfungsbeziehung? z.B. $ Buch-> link_to_cat ('5')?
  4. Alle Einschränkungen für die Verwendung dieses Ansatzes (falls zutreffend).

Jeder Rat wird sehr geschätzt! Danke im Voraus!

Pseudo-Code:

<?php 

class Books { 
    //handles all book table stuff 

    public function delete_book() { 
     //deletes specific book 
     //deletes all related bookcategories using find_by_book_id 
    } 
} 

class Categories { 
    // handles all category stuff 
} 

class BookCategories { 

    public static function get_cats_by_book_id { 
     // sql join statement to retrieve category objects by book id 
    } 

    public static function get_books_by_cat_id { 

    } 

    public static function find_by_book_id() { 
     //returns bookcategories by book id. 
    } 
} 


?> 
+0

Persönlich würde ich die 'BookCategories' Klasse ablegen - es ist ein unnötiges Implementierungsdetail. Fügen Sie einfach eine 'get_categories()' Methode in der Buchklasse und eine 'get_books()' Methode in der Kategorie-Klasse hinzu. Oder setzen Sie Code in jeden Konstruktor, um alle verknüpften Bücher/Kategorien aufzurufen, wenn Sie ein Kategorie-/Buchobjekt erstellen. –

+0

Warum sind Ihre Klassennamen im Plural? –

+0

@Sam - würden Sie das auch empfehlen, wenn BookCategories zusätzliche Eigenschaften haben, wie BookCategory assign_date, assigned_by_user usw. – Nick

Antwort

1

Sie könnten untersuchen Entwurfsmuster hilfreich. Das zusammengesetzte Muster wird häufig in dieser Situation verwendet. Ein gutes Buch, um Ihnen mit Design-Mustern mit PHP oo zu helfen, ist Matt Zandstra's PHP Objects, Patterns and Practice

+0

Danke - Ich kaufte es gestern nach dem Überprüfen einiger Bewertungen. Großer Vorschlag! Ich danke dir sehr! – Nick

Verwandte Themen