Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP-Code und HTML durch MVC im nachhinein trennen

Einklappen

Neue Werbung 2019

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

  • #16
    Zitat von Tobby Beitrag anzeigen
    Danke für das Codebeispiel!
    Letztendlich hat es ja viele ähnlichkeiten mit Smarty, außer, dass du eben alle Werte selbst raussuchst und selbst ersetzt... dadurch verliert es aber eben leider wieder an Übersichtlichkeit (meiner Meinung nach).
    Da kommst du kaum rum. irgendwas muss der parser erkennen. Bei mir ists einzig "INC-" und früher noch die "<!--loops-->" . damit konnte ich bis jetzt jede situation meistern... unübersichtlich wirds nicht. im Editor steht halt, statt dem echten Begriff einfach ein INC-, davor. Format usw. bleibt erhalten. du kannst also wüten wie du willst. Nur die Zeichenfolge darf nicht zerissen werden.

    Angenommen du willst das die variable "produkte" parsen. und hast keine kennung, so wirds auch im content ersetzt.. es braucht also eine kennzeichnung. klar könnte man noch im html-hintergrund basteln und eine NEUE PROGRAMMIERSPRACHE (mit IF! ELESE usw..) ins HTML einbasteln
    lade, dass dann mal in verschiedene editoren = code wird verrissen, template geht nimmer.

    z.b. kannst du auch den echten begriff reinknallen, und dann z.b. <span></span> parsen. aber die sind wiederum HTML-Elemente. Ein editor könnte sie zerstören.

    Außerdem frage ich mich, wie du es lösen willst, wenn du z.B. eine Tabelle mit variabler Anzahl an Zeilen hast und diese befüllen möchtest.
    Tabelle? kein problem... mach ich ja täglich.

    gibt nur 2 dinge:
    1. Werte
    2. Bereiche (können so ein-ausgeblendet, oder geloopt werden)
    für kennzeichnete ich bereiche mit dem HTML-kommentar <!--loops-->
    so konnte alles in einem template gemacht werden.
    ist aber unschön, da das ein HTML-Kommentar ist. lieber nur etwas parsen.

    besten aber so wie es BlackScorp vorschlägt. (so mach ich es heutzutage).... So hast du nur 1 Sorte Werte die du parsen musst. ausblenden = "";
    loopen = wiederholden des contents/oder des template in der schlaufe.

    Die komplette formatierung ist also in HTML. Und 0-1% Code wird ins php genommen.

    lstegelitz hat recht mit der leerzeile aber man kannst lösen, und kommt sehr selten vor. Im endeffekt lieber die logik in den php-code. Zur absoluten Not lieber mal ein '<br>' in den php-code, als den HTML-Code mit kontrollsrukturen zu fluten. denn dann wird der ist HTML-Code nicht mehr rein HTML. Alternativ zu meinem INC- kannst du auch mit [ ] oder {} arbeiten...
    Egal was du machst, bleib radikal HTML-Konform...

    Bei meinem CMS hab ich das so gelöst, dass ich [wert] raushole und der wert = einer variable ist. sich somit selbst zuweist. ist ein wert nicht gesetzt dann ein '' machen... dadurch sparst du am ende das zusätzliche zuweisen über eine 2. variable. a la: preg_rep(INC-ID mit $Kunden_ID)
    in dem im HTML code gleich die reale variable rein kommt also "$ID"

    PHP-Code:
    html:
    <
    td> [wellcome_msg] <td>

    php:
    //  $cms[wellcome_msg]  deckungsgleich...
    [] parsendort wellcome_msg durch sich selber setzen.
    die 
    variable $cms[wellcome_msgwiederum z.bkannst du in eine sprache auslagerna la:

    de.php:
    $cms_[wellcome_msg] = 'Wellcome';

    en.php:
    $cms_[wellcome_msg] = 'Willkommen'
    extrem wichtig ist der array... aus kompatibilität + sicherheitsgründen
    zu beginn einlesen und du hast alle messages / Felder / Buttons in der entsprechenden Sprache. Die "werte" an sich sprechen eh für sich.

    Zu der leerzeilen-problematik -> Lösung = array !
    Gutes beispiel sind z.b. stellen in denen man dropdowns nutzt.

    PHP-Code:
    html:
    <
    select size="1" name="land" onchange="submit()">INC-Land</select>

    php:
    $tmp='';
    foreach(
    $array as $land

         
    $tmp.= "$land\n"// oder <br>  <tr>
    }
    $html danach preg_replace (INC-Land mit $tmp); 
    Solche Situationen sind aber eher selten. ich sag meinem Template nur "was ich wo" haben will. rest ist in php. jetzt könnt ich noch die Business-Logik auslagern aus dem PHP-Code... aber ehrlichgesagt... was ausser einer programmiersprache ist schon logischer? wieso also das rad neu erfinden, wenns die IFs schon in php gibt hehe... naja BL raus oder nicht. egal.
    am aller wichtigsten jedoch GUI (html) + Code(php) getrennt.
    www.scriptforums.com - Foren für Skripts
    www.ragonvote.net - Kostenlose Umfragen
    www.ragonsoft.com - PHP und Android Apps (z. B. Knoten Video Guide)

    Kommentar


    • #17
      Zitat von lstegelitz Beitrag anzeigen
      Ich persönlich verwende Smarty, habe mich an die Syntax gewöhnt, ich habe einen Editor, der mir alle Smarty-Tags farblich kennzeichnet. Es ist Geschmackssache, jemand anderes wird sagen: "Ich komme besser mit PHP zurecht, dort kenne ich mich aus und kann alles machen, was PHP hergibt, auch brauch ich keine neue Syntax zu lernen"
      Naja, dann werde ich wohl mal ausprobieren, was mir besser gefällt und mir die Smarty-Dokumentation mal teilweise anschauen und schauen, was es es bietet.

      Zitat von lstegelitz Beitrag anzeigen
      Das kann nur ein Test zeigen.. ich würde Smarty mal nicht unterschätzen, die Lib ist schon lange unterwegs und hat einiges an Optimierung erfahren, Smarty arbeitet mit einem 2-stufigen Cache, bzw. es "compiliert" ein Template in eine "Vorstufe" und macht daraus eine PHP Datei, die zur weiteren Verwendung herangezogen wird.
      Es würde mich schonmal interessieren was schneller ist, hat da jemand schon einen Test gemacht?

      mfg Tobby

      Kommentar

      Lädt...
      X