Pseudo Template Klasse

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Pseudo Template Klasse

    Ich denke gerade über Vor- und Nachteile folgender Klasse nach:

    PHP-Code:
    class HTML
    {
      function 
    openForm($action$method "post")
      {
        return 
    '<form action="'$action .'" method="'$method .'">';
      }

      function 
    closeForm()
      {
        return 
    '</form>';
      }

    Die Methode openForm() ist sich noch nicht vollständig, aber es deutet an wie es gemeint ist. So würde ich auch Methoden für alle anderen HTML Tags entwickeln.

    Haltet ihr das für eine sinnige Klasse/Arbeitsweise?
    Rettet die Wälder - esst mehr Biber

  • #2
    verwende für solche sachen einfach HTML_QuickForm, dann brauchst du wenigstens nicht alles neu machen.

    Kommentar


    • #3
      naja ich möchte es aber neu machen. Soll auch zu Übungszwecken sein.
      Rettet die Wälder - esst mehr Biber

      Kommentar


      • #4
        gut, dann guck dir den code von QuickForm an, und entscheide selbst, was daran sinn macht und was keinen sinn macht.

        Kommentar


        • #5
          Ich würde gerne Meinungen zu obigen Code lesen. Nicht ob was anderes scheinbar besser ist. Ich will nicht die beste Template Klasse der Welt schreiben, sondern einfach eine Klasse, die keine größeren Denk/Ansatzfehler aufweist. Wie gesagt, es ist Übung.
          Rettet die Wälder - esst mehr Biber

          Kommentar


          • #6
            ok, dann würde ich an deiner stelle eine eigene klasse 'Form' bauen, die dann open(), close(), addField(), addButton() etc. beinhaltet, statt das ganze in die allegemeine klasse HTML zu packen, denn HTML ist weit mehr als nur formulare, und die klasse HTML wird, wenn du möglichst viele operationen unterstützen willst, mit der zeit zu groß.

            ich würde also so arbeiten, dass
            PHP-Code:
            $html = new Html();
            $form $html -> createForm(); // return new Form, Form extends HtmlElement
            $form -> open();
            $form -> addField('bla');
            $form -> addButton('submit');
            $form -> close();
            $html -> add($form); // function add(HtmlElement $elem); throws IllegalChildException
            echo $html -> toHtml(); // foreach $this -> children: $child -> toHtml(); 
            möglich ist.

            könnte sogar weiter gehen, dass auch Form jeweils create() - und add() - operationen für kindelemente enthält.


            grüße
            axo
            Zuletzt geändert von axo; 20.02.2006, 14:23.

            Kommentar


            • #7
              Ja, ich werde verschiedene Unterklassen erstellen. Aber ansonsten ist mein Ansatz doch ok, oder?

              Axo, es geht mir nicht um deine Lösung oder um eine bessere Lösung, sondern um die obige Klasse. Ob der Stil so vertretbar ist oder ob das Prinzip eher schlecht ist.

              danke für dein Beispiel, aber wie gesagt, darum gehts leider nicht. Also ich wäre dir dankbar, wenn du auch mal einen Satz zu obiger Klasse schreiben würdest, statt diese komplett zu ignorieren.
              Rettet die Wälder - esst mehr Biber

              Kommentar


              • #8
                Hi,

                Viel kann man zu deiner Klasse nicht sagen, da sie kaum Inhalt hat.

                Deine Klasse erzeugt ein Formular Element innerhalb deines PHP Codes. Dadurch hebst du die Trennung von HTML und PHP Code auf, die man mit einem Template System erreichen möchte.
                Arbeitest du ohne Template System, oder integrierst du das in ein bestehendes Template-System?

                Beim derzeitigen Stand würdest du halt den großteil HTML Code mit kleinen Blöcken PHP Code hättest, welche dann das Formular erzeugen, wodurch das Ganze aber nicht übersichtlicher wird wie ich finde.

                Gruß Thomas

                Kommentar


                • #9
                  Stimmt schon, es ist keine wirkliche Template Klasse, deswegen auch "Pseudo" im Titel.

                  Ich möchte nur nicht so ein kompliziertes System haben, wo man im Grunde eine eigene Sprache lernen müsste, wie z.B. bei smarty.

                  PHP ist eine perfekte Template Engine, man muss sich das nur zusammenbasteln.

                  Wieso wäre meine Klasse nicht übersichtlich? Ich öffne mit einer Funktion ein Formular

                  $obj->openForm($param);

                  Füge als nächstes Elemente dazu

                  $obj->addInput($param);

                  mit HTML Formatierung

                  $obj2->br;

                  $obj->addSelect($param);

                  und schließe das Formular wieder

                  $obj->closeForm($param);

                  Würde dann so aussehen:
                  PHP-Code:
                  $obj->openForm($param);
                  $obj->addInput($param);

                  $obj2->br;

                  $obj->addSelect($param);
                  $obj->closeForm($param); 
                  Ich möchte im Grunde nicht mehr erreichen, als den HTML Code möglichst komplett aus den Skript Dateien zu haben. also in den Klassendefinitionen ja, aber nicht in den Skripten.

                  Nicht gut?
                  Rettet die Wälder - esst mehr Biber

                  Kommentar


                  • #10
                    Damit das funktioniert musst du aber alle Elemente von HTML in deine Klasse einbauen.
                    Dann aber hättest du keinen HTML Code mehr, um Design von Hand anzupassen, du müsstest dich mit dem zufrieden geben, was die deine vorgebastelte Struktur erlaubt.

                    Sobald du dann noch Tabellen benötigst, und zum Beispiel deine Input Felder in dieser anzuordnen wirds richtig unübersichtlich im PHP Code.

                    Ein weiterer Punkt: Deine derzeitige Implementierung unterstützt kein CSS.

                    Wie Smarty das alles handhabt weiß ich nicht, ich habe bisher immer nur die minimalste Template-Klasse verwendet: Sie kann Platzhalter ersetzen, sonst nichts.

                    Gruß Thomas

                    Kommentar


                    • #11
                      Da ist was wahres dran. Gute Argumente, die mir bisher nicht so klar waren. Danke.
                      Rettet die Wälder - esst mehr Biber

                      Kommentar


                      • #12
                        Original geschrieben von deetee
                        ... Argumente, die mir bisher nicht so klar waren.
                        ist dir jetzt klar, warum
                        - ich gemeint hab, du sollst mehrere klassen bauen und allgemeiner arbeiten?
                        - ich gemeint hab, du sollst dir andere systeme und deren arbeitsweise anschauen?

                        Kommentar


                        • #13
                          klar ist mir das jetzt klar.
                          Rettet die Wälder - esst mehr Biber

                          Kommentar

                          Lädt...
                          X