Ausgabe von HTML mit Echo als schlechte Praxis in PHP?

8

In PHP verwende ich eine if -Anweisung, um zu identifizieren, ob ein Benutzer angemeldet ist oder nicht, und abhängig vom Ergebnis das Hauptmenü (wenn angemeldet) oder die Meldung "Sie müssen sich anmelden" angezeigt wird wenn nicht. Ich mache das so:

%Vor%

Wie Sie sehen, wird der Code zur Anzeige des Hauptmenüs oder der Meldung "Bitte einloggen" von echo erzeugt. Ist das eine schlechte Übung, vielleicht gibt es einen besseren Weg?

Übrigens, ich habe den Großteil des HTML aus dem echo s in meinem obigen Ausschnitt ausgeschnitten. Das Hauptmenü besteht aus einer Liste, aber ich habe mich nicht darum gekümmert, da es für die Frage unerheblich ist, denke ich.

    
james246 29.11.2011, 21:33
quelle

7 Antworten

24

Ich halte es für eine schlechte Übung. Ich bin mir nicht sicher, was irgendjemand sonst denkt. Zum einen sieht es in Texteditoren mit Syntaxhervorhebung schrecklich aus, dann müssen Sie sich Gedanken über Strings usw. machen.

So mache ich es:

%Vor%

Sie können die PHP-Tags überspringen und direktes HTML verwenden. Es gibt Vor- und Nachteile, dies auf diese Weise zu tun. Ich mag es viel besser, als Dinge auszuhacken. Andere Optionen wären, neue Ansichten in diese Bereiche basierend auf den Ergebnissen der if-Anweisungen zu rendern. Viele Möglichkeiten, aber das obige ist nur eine Möglichkeit, das ein wenig sauberer und (ich denke) besser zu machen.

    
Jemaclus 29.11.2011, 21:37
quelle
6

Es ist nichts falsch mit Echo für HTML, wenn es in der Moderation verwendet wird. Verwenden Sie es nicht für lange Multi-Line-Blöcke. Sie werden unweigerlich mit einem hässlichen Konstrukt enden, das es erfordert, zu entkommen und was nicht, was die Sache noch hässlicher macht.

Wenn der ausgegebene HTML-Code "statisch" ist (keine einzufügenden Variablen), sollten Sie den OUT-Modus des PHP-Modus ( ?> ) unterbrechen und den HTML-Code einfach so ausgeben, wie er ist. Wenn Sie Variablen einfügen müssen, sollten Sie ein HEREDOC verwenden, das sich wie eine Zeichenfolge in doppelten Anführungszeichen verhält, aber ohne die Anführungszeichen.

    
Marc B 29.11.2011 21:38
quelle
5

Warum schreibst du es nicht so?

%Vor%

Mit den alternativen Kontrollstrukturen trennen Sie Ihr Markup etwas mehr von Ihrem Code.

    
Rob Stevenson-Leggett 29.11.2011 21:37
quelle
3
%Vor%

Das Schöne an PHP ist, dass Sie das tun können.

    
Bjørn Kjos-Hanssen 29.11.2011 21:38
quelle
2

Wenn Ihr Projekt eine vernünftige Größe erreicht, gibt es im Prinzip keine Möglichkeit, die Präsentationselemente und Programmlogik sauber zu trennen, nur um Wartbarkeit und Skalierbarkeit zu gewährleisten. Was Sie in Ihrem aktuellen Code tun, ist nicht wirklich wichtig; Auf lange Sicht sollten Sie von Anfang an auf einen sauberen Designansatz achten.

Es gibt viele bestehende Lösungen, die normalerweise eine Art von Layoutvorlagen beinhalten, die durch den Code geladen werden.

    
Kerrek SB 29.11.2011 21:38
quelle
1

Es gibt keine echte "Best Practice", obwohl einige argumentieren, dass sie das eine oder das andere bevorzugen. Wenn Sie HTML von PHP trennen, isolieren Sie das Backend Ihrer Anwendung idealerweise vom Frontend, was das Lesen, Ändern und Pflegen erleichtert.

Was Ihren Code angeht, so ändere ich ihn vielleicht, damit er präziser wird (je nachdem, was Sie unter "MAIN MENU stuff ..." verstehen, würde ich diese Änderung noch einmal überdenken):

%Vor%     
nickb 29.11.2011 21:38
quelle
0

Manche halten es für eine schlechte Praxis, das gilt für alles. Ich benutze kein Echo. Wenn Sie dies auf diese Weise tun, ist es für Redakteure wie Dreamweaver klarer, was Sie wollen, und Sie erhalten alle Vorteile der automatischen Vervollständigung.

%Vor%     
Anfurny 29.11.2011 21:38
quelle

Tags und Links