Wie kann ich php + html schöner schreiben, ohne Smarty zu lernen?
Sie können die alternative Syntax von PHP für Kontrollstrukturen verwenden :
%Vor% Beachten Sie, dass short_open_tags eine php.ini-Anweisung ist, die benötigt wird explizit aktiviert werden, sonst müssten Sie jedesmal <?php
schreiben.
Sie können das MVC-Entwurfsmuster (Model, View, Controler) implementieren, Ihr Code kann als ein Modell verwendet werden, um die Ansicht zu laden:
%Vor%In der view.php zeigen Sie die HTML-Seite nur mit den Echos für PHP-Variablen und Array an.
Wie viele andere vorgeschlagen, könnten Sie die MVC verwenden, oder wenn Sie nicht möchten, eine strenge MVC-Struktur zu implementieren, sollten Sie sowieso ein Templating-System verwenden.
Das bedeutet nicht, dass Sie smart lernen müssen, Sie können Ihr eigenes Template-System schreiben, mit genau der Funktion, die Sie tatsächlich brauchen.
Wenn Sie mit Designern arbeiten und Leistung nicht Ihr erster Punkt ist, können Sie eine HTML-Datei mit einfachen Platzhaltern erstellen, wo der dynamische Inhalt gehen muss, und ersetzen Sie sie dann mit PHP (str_replace, preg_replace) .. aber das wird langsamer Ihre Bewerbung.
Beispiel:
%Vor%und Ihre Templating-Datei:
%Vor%Dies ist wirklich ein einfaches Beispiel und hat zwei Probleme:
Eine einfachere Lösung kann sein:
%Vor%und php:
%Vor% Aber echo HTML sollte wie möglich reduziert werden, ist keine gute Praxis und es Logik mit Inhalt mischen
Logic is logic, data is data, and life is good
Ich persönlich mag es nicht, kurze Tags zu verwenden, da ich finde, dass sie unter Dateien inkonsistent sind und lieber an einer Methode festhalten. Sie können es mit ein paar einfachen Änderungen wie folgt aussehen lassen:
%Vor%Ein bisschen einfacher als einige der anderen Antworten, aber auch die Art und Weise, wie ich am besten finde. Es geht wirklich um Ihre eigene Präferenz, obwohl viele andere gute Methoden vorgeschlagen wurden (so würde ich es tun).
Du könntest es so machen ...
%Vor%Wenn Sie es Ihren Designern erleichtern möchten, verwenden Sie einfach externe Dateien:
%Vor%und verwende deine vordefinierten Schlüsselwörter, um php berechneten Inhalt einzufügen (wie % php generierten Inhalt% in diesem Beispiel durch 2 (1 + 1) ersetzt wird)
Wenn Sie zu DaNieLs Antwort hinzufügen, können Sie etwas tun wie:
%Vor%Beispiel:
%Vor%Ergebnis:
%Vor%Anonyme Funktionen funktionieren nur für PHP 5.3 oder höher
Es gibt zwei Fälle wirklich:
1) Vorlagencode. Ich würde soulmerges Ansatz der alternativen Syntax für Kontrollstrukturen empfehlen.
2) Kurzer, View-Helfer-PHP-Code, der eine Ausgabe generiert (normalerweise für eine spätere Ersetzung), die nicht unbedingt eine eigene Untervorlage verdient.
Für 2 bevorzuge ich etwas wie:
%Vor% Ich bevorzuge dies gegenüber jeder Art von wackeligen Alternativen, die ob_start()
und ?> <?php
Blöcke beinhalten könnten. Sie möchten immer, dass Ihre Funktionen Zeichenfolgen und nicht direkt die Ausgabe zurückgeben, so dass Callees die Möglichkeit haben, Ergebnisse zu verketten und anderweitig zu manipulieren, ohne die Last der Ausgabepufferung auf dem Aufgerufenen zu überschreiten.
Das heredoc macht es einfach, die String-Ausgabe zu identifizieren, und obwohl ich denke, dass das Brechen der Einrückung ziemlich hässlich ist, ist es ziemlich effektiv, da Ihre HTML-Ausgabe wie kleine Haftnotizen hervorsticht. Das und die Tatsache, dass es in meiner IDE (PDT) gut grün hervorgehoben wird. (Nicht hier im SO-Highlighter gesehen ...), also ist es immer explizit genau, in welcher Art von "Modus" ich bin.
Im Gegensatz dazu macht es die ?> <?php
-Technik schwierig, html von PHP-Code zu unterscheiden. Sobald Sie es ein paar Mal tun, wird es nervig zu verfolgen, ob Sie eine ?>
oder eine <?php
benötigen. Schließlich ist es oft viel ausführlicher, Substitutionen mit <?php echo $obj->func() ?>
vs {$obj->func()}
Wenn Ihr Code komplexer wird, dann ist es vielleicht an der Zeit, ihn neu zu gestalten. Ich mag heredoc, denn wenn ich etwas ad-hoc mache, wird es hervorstechen und in ein paar Monaten ganz offensichtlich werden (ad-hoc tendiert dazu, zu einem Schlammball zu werden, wenn man Anforderungen hinzufügt), wenn ich es habe habe 40 Zeilen von hredoc, die als 5 gestartet haben könnten. Wenn ich zurückkomme und meinen Code betrachte und die nicht vollständig ad-hoc-Version entwickle, ist es viel einfacher, die Teile der Datei zu identifizieren, in denen ich schlecht war. Das geht zurück auf die Haftnotizen, grün hervorgehobener Kommentar, den ich auch über den Einzug gemacht habe.
Mit diesem - PHP Echo. Wenn es das ist, was Sie wollen, dann ist es vielleicht besser lesbar, wenn Sie große Mengen an HTML ausgeben.