oop, was gibt es besseres?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • oop, was gibt es besseres?

    OOP, flexibel, wiederverwendbar, übersichtlich, ... einfach nur super umgänglich. das hört und liest man überall. Aber wenn man dann selber los legt, stößt man schnell auf Fragen, besonders zu Beginn.

    Mein Gedanke:
    Ich möchte unter anderem eine Menü Klasse (ggf. mehrere) entwerfen.
    Genauer soll sie aus einer DB Daten erhält oder darauf zu greift.
    Sie soll ein Menü erstellen/ausgeben, mit Hilfe übergebener Templets.
    ... und bestimmt fällt jemandem von euch noch was ein.

    Mein Vorschlag:

    Quellcode

    1. <?php
    2. class menu {
    3. // menuedaten als array (z.b. aus db)
    4. // row = über alle datensaetze / cols = id, name, url, ...
    5. public $menu_data;
    6. // id des aktiven menuepunktes (z.b. von GET / POST)
    7. public $menu_activ;
    8. public function __construct($db_menu_data, $get_menu_activ=0) {
    9. // weiss nicht aber hier sollte noch ein fehler abfang rein
    10. // wenn keine $db_menu_data leer ist, gibt auch kein menu
    11. $this->menu_data = $db_menu_data;
    12. $this->menu_activ = $get_menu_activ;
    13. }
    14. // produziert ausgabe
    15. public function create_menu($menu_icon="", $menu_icon_activ="", $menu_frame="") {
    16. $html_menu = "";
    17. foreach($this->menu_data as $row) {
    18. if($row["id"] == $this->menu_activ) {
    19. $tmp = str_replace("{\$name}", $row["name"], $menu_icon_activ);
    20. }
    21. else {
    22. $tmp = str_replace("{\$name}", $row["name"], $menu_icon);
    23. }
    24. $html_menu .= str_replace("{\$url}", $row["path"], $tmp);
    25. }
    26. $html_menu = str_replace("{\$menu}", $html_menu, $menu_frame);
    27. return $html_menu;
    28. }
    29. }
    30. ?>
    Alles anzeigen


    Was denkt ihr. Ich bin nicht wirklich sicher ob diese class das ist wo nach ich suche.
    Bitte, helft mir mit sinnvollen Ergänzungen und verständlichen Erklärungen. Danke, schon mal!

    Ja, noch was. Hab mittlerweile eine Menge guter und ausführlicher Tutorials gelesen aber ich möchte einfach nur verstehen, wie man die OO-Strategie auf abstraktere und praxisnähere (bzgl. Webprogrammierung) Objekte anwendet, als auf Autos und Schränke!
  • Also wenn es dir nur um die Optimierung deines Codes geht, dann kann ich dich beruhigen. Gibt nicht viel.

    * Du solltest die Membervariablen (menu_data, menu_activ) als private deklarieren.
    * Klassennamen nach Konvention mit großem Anfangsbuchstaben

    Dann noch ein kleine Idee, die aber jeder Programmierer anders macht.
    Ich würde set und get Methoden klar voneinander trennen.
    create_menu() würde also als reine set Methode eine Membervariable setzen.

    Und für die Ausgabefunktionen kannst du die klasseneigene toString Methode überschreiben (Polymorphie).

    Quellcode

    1. class Menu {
    2. public function __toString() {
    3. return 'hallo';
    4. }
    5. }
    6. $Menu = new Menu();
    7. print $Menu;