kostenloser Webspace werbefrei: lima-city


Sauberer PHP/HTML Programmierstil

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    beachteam

    beachteam hat kostenlosen Webspace.

    Hallo Leute!

    Ich wollte mal allgemein nachfragen, was eurer Meinung nach besserer oder sauberer Programmirstil ist.
    Es geht um HTML Ausgaben verbunden mit PHP

    Aus reiner Programmierlogik habe ich bisher immer den gesamten Inhalt meiner Seite in <?php ... ?> eingebettet und HTML Ausgaben komplett mit echo generiert, also etwa in der Art wie in folgendem Beispiel:

    <html>
      <head>...</head>
      <body>
        <div id=content>
          <?php
             if(section = news)  {
               echo "<h1>News</h1>
               <p>....</p>";
            } else if (...) {
               ...
            }
          ?>
        </div>
      </body>
    </html>


    Das Problem dabei ist, dass das Editor Syntax Highlighting hier nicht komplett funktioniert, und jeglicher HTML Code in echo "..." in der gleichen Farbe dargestellt wird. Diesbezüglich habe ich nun schon einige Male anderen Programmierstil gesehen, bei denen die PHP Segmente aufgeteilt werden und der HTML Code direkt ausgegeben wird, wodurch das Syntax Highlighting des Editors am effizientesten genutzt wird, das ganze allerdingsmeiner Meinung nach in der Struktur etwas unübersichtlicher wird.

    <html>
      <head>...</head>
      <body>
        <div id=content>
          <?php if(section = news)  { ?>
          <h1>News</h1>
          <p>....</p>
          <?php } else if (...)  { ?>
              ...
          <?php } ?>
        </div>
      </body>
    </html>


    Würde also gerne Mal von euch eure Meinung hören, was eurer Meinung nach sauberer gecoded ist bzw. wo ihr die Vor- und Nachteile in den einzelnen Varianten seht. Oder kennt ihr gar noch eine andere effiziente Lösung?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m*********i

    Klar ist das das Higlighting mit HTML in PHP nicht funktioniert da der auszugebende HTML Inhalt natürlich als String (Zeichenkette) behandelt wird
    und vom editor auch so gehighlightet wird.

    Eine allgemein bessere Lösung wäre es, HTML und PHP Code voneinader zu trennen
    -> Template System
  4. Es gibt Editoren, die dir auch HTML, JavaScript, SQL, ... in Strings highlighten können. PHPStorm kann dies beispielsweise.

    Wie aber misterbasti schon erwähnt hat, solltest du noch besser PHP ganz von HTML trennen, indem du eine Template Engine verwendest. Für PHP ist Twig der kommende Standard was TE anbelangt.
  5. thwjugend-marktschwaben

    thwjugend-marktschwaben hat kostenlosen Webspace.

    Schon fertig geschriebener HTML-Code mit mehreren kleinen php-Segmenten führt meines Wissens schneller zur Darstellung als wenn man auch den bloßen HTML-Code erst über echo produziert..

    Gruß,
    Christian
  6. thwjugend-marktschwaben schrieb:
    Schon fertig geschriebener HTML-Code mit mehreren kleinen php-Segmenten führt meines Wissens schneller zur Darstellung als wenn man auch den bloßen HTML-Code erst über echo produziert..

    Gruß,
    Christian


    Nicht zwangsweise. Wenn man nur einen einzigen PHP Block hat, wird der PHP Interpreter nur ein mal angeworfen. Wenn man aber dauernd zwischen PHP und HTML hin und her wechselt, entsteht ein nicht unbedeutenderr Overhead.

    Aber um solche kleinen Performanceangelegenheiten sollte man sich nicht kümmern ;) Was nun schneller ist, ist absolut egal. Entscheidend ist nur, was sauberer ist.
  7. Wie wäre es mit einem MVC-Framework, z.B. Zend. Damit kann man fast sauber HTML, PHP und Datenbankzugriffe voneinander trennen.
  8. g****e

    nikic, Twig nutzt du, wird aber kein standart für ALLE. ich zb brauch und nutze es nicht, ich habe eigene engines ;-) und bekannte von mir die in der webentwicklung arbeiten nutzen eigene auf smarty basierende engines ;-)

    es kann die umgebung bereits helfen einen richtigen schönen code zu haben. ich persönlich nutze im moment NetBeans IDE mit PHP plugin. ist seeeeehr gut fürs übersichtliche arbeiten. wenn ich jetzt sage besser als eclipse krieg ich haue^^ ist aber eigene meinung.
    für das übersichtliche arbeitem mit PHP UND HTML probiere mal scriptly http://scriptly.webocton.de/ damit hab ich nur gute erfahrungen gemacht in dem bereich.

    MVC designte frameworks mögen helfen, aber nicht zwangsweise zu besserem/schönerem code führen. ein bissel überwindung hilft =) wordpress hat einen schönen guide für übersichtlichen code:
    http://codex.wordpress.org/WordPress_Coding_Standards

    vllt kannst du damit was anfangen.
  9. karlsve

    Moderator Kostenloser Webspace von karlsve

    karlsve hat kostenlosen Webspace.

    Nabend die Damen,
    also generell schließe ich mich Nikic und den anderen die für die Nutzung eines Template-Systems sind an. Ob der genutzte Editor wirklich etwas mit der Übersichtlichkeit des Codes zu tun hat kann ich nicht eindeutig bestätigen. Im Endeffekt ist dies auch NUR vom Benutzer abhängig, da man einen super Editor nutzen kann und trotzdem total durcheinander fuckeln. Ich persönlich benutze zum Beispiel den relativ gering gehaltenen Editor Notepad++ welcher eigentlich nur das Syntaxhighlighting in meinem Fall unterstützt.
    Grundsätzlich ist also nicht das Programm dafür verantwortlich.

    Zum eigentlichen Thema:
    es gibt keine eindeutigen Richtlinien, aber wie bereits häufiger erwähnt ist es evtl. sinnvoll ein Template-System einzubauen. hierfür kann man auch einfach einmal ein System schreiben und es jedesmal wieder verwenden, da alle Varianten eh ähnlich aussehen werden. Dieses System ermöglicht es vorher die gesamten nötigen Daten zu berechnen/erstellen und hinterher unabhängig von der Berechnung einzufügen. Da die Frage des Aussehens eigentlich nur auftritt, wenn man etwas für die Nutzung Anderer und in Hinblick auf eventuelle Änderungen durch Andere schreibt, so ist das Template-System wohl am einfachsten zu überschauen und es ist auch am einfachsten abzuändern.

    Ich hoffe das hat ein wenig geholfen.
    Mit freundlichen Grüßen,
    karlsve

    PS: man kann auch einfach ein bestehendes Template-Engine verwenden, was allerdings evtl. nicht immer den eigenen Wünschen entspricht und es teilweise einfacher ist selbst ein Engine nach den persönlichen Anforderungen zu erstellen.

    Edit: Im Endeffekt ist außerdem wirklich wichtig, dass der Code gut kommentiert und weniger wie er zusammengesetzt ist. Selbst vom Grundsatz her noch so unübersichtlicher Code kann durch eine gute Dokumentation verständlich werden.

    Beitrag zuletzt geändert: 18.1.2011 0:32:54 von karlsve
  10. karlsve schrieb:
    Edit: Im Endeffekt ist außerdem wirklich wichtig, dass der Code gut kommentiert und weniger wie er zusammengesetzt ist. Selbst vom Grundsatz her noch so unübersichtlicher Code kann durch eine gute Dokumentation verständlich werden.
    Guter Code dokumentiert sich meiner Meinung nach selbst ;-)

    Aber wie schon richtig gesagt wurde, gibt es keine eindeutigen Richtlinien, wie so ein Code gemacht sein muss. Ich persönlich beispielsweise bevorzuge, die ganze Ausgabe über echo zu generieren, wenn ich schon mit php arbeite. Dies bringt natürlich bei einigen Editoren Probleme beim Syntaxhighlighting, aber ich denke, dass dieser im HTML sowieso jetzt nicht so tragend ist.
    Der Vorteil daran ist, dass man volle Kontrolle über die Ausgabe hat. So wird verhindert, dass beispielsweise unnötige Whitespaces vom Server gesendet werden müssen. Beispielsweise rutschen einem im HTML gerne mal ein paar Leerzeichen ans Ende einer Zeile. Hast du 20.000 Zeilen HTML-Code, wo bei jeder dann 3 Leerzeichen am Ende stehen, produzierst du schon knapp 60kb unnötigen Traffic. Dies lässt sich halt mit php genau kontrollieren. Um das mal an deinem Beispiel aufzuführen, so würde dein oben genannter Quellcode bei mir aussehen:
    <?php
    echo "<html>\n";
    echo "\t<head>...</head>\n";
    echo "\t<body>\n";
    echo "\t\t<div id=content>\n";
    if(section = news){
    	echo "\t\t\t<h1>News</h1>\n";
    	echo "\t\t\t<p>....</p>\n";
    }else if(...){
    		...
    	}
    echo "\t\t</div>\n";
    echo "\t</body>\n";
    echo "</html>";
    ?>
  11. t*****b

    geekgirl schrieb:
    karlsve schrieb:
    Edit: Im Endeffekt ist außerdem wirklich wichtig, dass der Code gut kommentiert und weniger wie er zusammengesetzt ist. Selbst vom Grundsatz her noch so unübersichtlicher Code kann durch eine gute Dokumentation verständlich werden.
    Guter Code dokumentiert sich meiner Meinung nach selbst ;-)

    Aber wie schon richtig gesagt wurde, gibt es keine eindeutigen Richtlinien, wie so ein Code gemacht sein muss. Ich persönlich beispielsweise bevorzuge, die ganze Ausgabe über echo zu generieren, wenn ich schon mit php arbeite. Dies bringt natürlich bei einigen Editoren Probleme beim Syntaxhighlighting, aber ich denke, dass dieser im HTML sowieso jetzt nicht so tragend ist.
    Der Vorteil daran ist, dass man volle Kontrolle über die Ausgabe hat. So wird verhindert, dass beispielsweise unnötige Whitespaces vom Server gesendet werden müssen. Beispielsweise rutschen einem im HTML gerne mal ein paar Leerzeichen ans Ende einer Zeile. Hast du 20.000 Zeilen HTML-Code, wo bei jeder dann 3 Leerzeichen am Ende stehen, produzierst du schon knapp 60kb unnötigen Traffic. Dies lässt sich halt mit php genau kontrollieren. Um das mal an deinem Beispiel aufzuführen, so würde dein oben genannter Quellcode bei mir aussehen:
    <?php
    echo "<html>\n";
    echo "\t<head>...</head>\n";
    echo "\t<body>\n";
    echo "\t\t<div id=content>\n";
    if(section = news){
    	echo "\t\t\t<h1>News</h1>\n";
    	echo "\t\t\t<p>....</p>\n";
    }else if(...){
    		...
    	}
    echo "\t\t</div>\n";
    echo "\t</body>\n";
    echo "</html>";
    ?>



    Dann kannst du die ganzen \t und \n gleich auch weglasse, diese dienen sowieso nur der eigenen Lesbarkeit und nicht dem Browser zum interpretieren, machen bei dir also keinen Sinn. Wie willst du deinen Quellcode so wirklich verstehen, vor allem bei 20.000 Zeilen (selbst wenn davon 90% generiert sind)? Zusätzlich bedeutet das für Apache mehr zu interpretieren und ist seeehr viel mehr Schreibarbeit. Außerdem kann jeder moderne Editor Whitespaces anzeigen. Also ist das absolut(!) keine Lösung.

    Eine Templateengine ist auch nicht immer zu empfehlen, da es keinen Unterschied macht, ob man <?=$var;?> oder %var% oder was auch immer schriebt.

    Ein MVC-Framework macht ab ner bestimmten Größenordnung Sinn, ist aber trivial bei der Frage nach dem Programmierstil, da wir uns auch hierbei fragen müssen, ob man in der View inline-php oder ein Template-System verwendet.

    /Edit:
    Bei dem Beispiel des Threaderstellers:

    <html>
      <head>...</head>
      <body>
        <div id=content>
          <?php if(section = news)  { ?>
          <h1>News</h1>
          <p>....</p>
          <?php } else if (...)  { ?>
              ...
          <?php } ?>
        </div>
      </body>
    </html>


    Kann man es noch weiter vereinfachen:

    <html>
      <head>...</head>
      <body>
        <div id=content>
          <?php if(section = news) : ?>
            <h1>News</h1>
            <p>....</p>
          <?php elseif(...) : ?>
              ...
          <?php else : ?>
              ...
          <?php endif; ?>
        </div>
      </body>
    </html>


    Das wäre zB auch meine bevorzugte Schreibweise.

    Beitrag zuletzt geändert: 18.1.2011 1:24:17 von trueweb
  12. trueweb schrieb:
    Dann kannst du die ganzen \t und \n gleich auch weglasse, diese dienen sowieso nur der eigenen Lesbarkeit und nicht dem Browser zum interpretieren, machen bei dir also keinen Sinn. Wie willst du deinen Quellcode so wirklich verstehen, vor allem bei 20.000 Zeilen (selbst wenn davon 90% generiert sind)? Zusätzlich bedeutet das für Apache mehr zu interpretieren und ist seeehr viel mehr Schreibarbeit. Außerdem kann jeder moderne Editor Whitespaces anzeigen. Also ist das absolut(!) keine Lösung.
    Der HTML-Quellcode lässt sich auch so wie ich finde recht gut lesen. Natürlich ist die Notation nun nur ein persönlicher Tick von mir. Man könnte auch die originalen Whitespaces nehmen, wobei ich dies im Grunde nicht so übersichtlich finde. Beispielsweise könnten anstelle von einem Tabulator auch acht Leerzeichen stehen, welche am Ende acht mal so viel Traffic produzieren.
    Was die "Interpretation" angeht, würde ich sagen, dass das wenig unterschied macht. Natürlich ist es einfacher, wenn der Apache nur reines HTML nehmen und senden muss. Aber ansich macht es keinen merkbaren Unterschied, ob er nun 20.000 echo's interpretieren muss, oder fünf. Auf halbwegs modernen Servern sollte das in weniger als einer Millisekunde verarbeitet sein.

    Ein weiterer Vorteil ist die Organisation. Wenn es an 18-fach verschachtelte kondition-schleifen-kombinationen geht, bringt es einem wenig, wenn man mit der php-einrückung und der html-einrückung und dann noch möglichst ohne tabulatoren dann irgendwo im Nirvana endet. Das erhöht die Lesbarkeit keineswegs.
    Wie schon gesagt handelt es sich dabei um meine persönlich Meinung, wie ich sowas gerne gestalte. Ich halte es halt für einfacher, reinen php-code zu lesen, als ständig irgendwo etwas eingeschoben zu sehen.
  13. Autor dieses Themas

    beachteam

    beachteam hat kostenlosen Webspace.

    Wow, ist ja eine richtig hitzige Diskussion hier entanden, sehr schön =)

    Ich persönlich verwende Eclipse mit PHP Plugin weil ich damit sehr gute Erfahrungen gemacht habe und auch ein wenig C++ und JAVA in Eclipse programmiere, so habe ich alles beisammen.

    Das Template system finde ich sehr interessant, wird aber sicherlich schnell hinfällig, wenn etwas komplexe Sturkturen entstehen, oder? Vernwedet zum Beispiel die LimaCity Community solche Templates? Hier gibt es ja auch relativ komplerxe Strukturen mit Benutzerverwaltung, eingaben durch Benutzer (Forum), Nachrichtensystem, und und und. Da stroßen Templates sicherlich an ihre grenzen, oder habe ich da etwas falsch verstanden?

    Die von trueweb angegebene Schreibweise mit doppelpunkten statt geschweiften Klammern habe ich auch schon gesehen, ist mir aber irgendwie doch ein Dorn im Auge. Die geschweiften Klammern gehören für mich einfach dazu, auch wenn sie vielleicht das ganze ein klein wenig komplizierter machen, aber dadurch sind meiner Meinung nach Abschnitte klarer definiert.

    Auf jeden Fall sammeln sich hier viele Anregungen die ich mir alle mal anschauen werde.
  14. karlsve

    Moderator Kostenloser Webspace von karlsve

    karlsve hat kostenlosen Webspace.

    beachteam schrieb:
    Das Template system finde ich sehr interessant, wird aber sicherlich schnell hinfällig, wenn etwas komplexe Sturkturen entstehen, oder? Vernwedet zum Beispiel die LimaCity Community solche Templates? Hier gibt es ja auch relativ komplerxe Strukturen mit Benutzerverwaltung, eingaben durch Benutzer (Forum), Nachrichtensystem, und und und. Da stroßen Templates sicherlich an ihre grenzen, oder habe ich da etwas falsch verstanden?


    Die Template-Systeme sind eigentlich für die grobe Aufteilung der Seiten zuständig. Sie ermöglichen eine möglichst einfache Strukturierung. Man kann damit festlegen, wo z.B. Kopf, Navigation und der Hauptinhalt der Seite angezeigt werden sollen.
    Das wird dann durch einen Parser an den entsprechenden Stellen eingefügt.
    Hier mal eben ein kurzes Beispiel.

    HTML von einem Template:
    ...
    <body>
     <div id="kopf">
      #kopf#
     </div>
     <div id="nav">
      #nav#
     </div>
     <div id="inhalt">
      #inhalt#
     </div>
    </body>


    Das ganze wird in dem PHP-Script der Seite eingebunden und die #inhalt#, usw. Bestandteile des HTML-Codes werden durch die tatsächlichen Teile der resultierenden Seite eingebunden. Somit kann man jegliche Inhalte dynamisch generieren und anzeigen lassen, all das jedoch nach dem selben Grundgerüst.

    MfG
    karlsve

    Edit: Hier noch nen kurzes Beispiel. Dieses ganze CMS wurde von telelo mit einem Template-System gebastelt. Ähnlich ist es bei Wordpress und anderen fertigen Paketen.
    Und noch ein Beispiel von mir selbst: http://personal.karlsve.de/

    Beitrag zuletzt geändert: 20.1.2011 0:33:23 von karlsve
  15. Autor dieses Themas

    beachteam

    beachteam hat kostenlosen Webspace.

    Hm ok, interessanter dabei wäre die PHP File.

    Nach dem Schema arbeite ich auch schon, allerdings dann auf die Art:

    include_once('MyShow.php');
      $show = new MyShow();
    
    <body>
     <div id="kopf">
       <?php $show->createHeader() ?>
     </div>
     <div id="nav">
       <?php $show->createNav() ?>
     </div>
     <div id="inhalt">
       <?php $show->createContent() ?>
     </div>
    </body>


    Wobei ich dann eben in der MyShow.php file die Funktionen habe, welche dynamisch die einzelnen elemente kreieren. Da ist der Schritt zum Template System dann ja eigentlich nicht weit.
  16. karlsve

    Moderator Kostenloser Webspace von karlsve

    karlsve hat kostenlosen Webspace.

    Hier ist mal eine relativ simple Variante des PHP-Teils.
    <?php
     $document = file_get_contents("templates/" . $config->template . "/index.php");
     $parse = array(
    	"#kopf#" => $header,
    	"#title#" => $title,
    	"#navigation#" => $menu,
    	"#inhalt#" => $content,
    	"#footer#" => $footer
     );
    
     // parse
     $document = str_replace(array_keys($parse), $parse, $document);
    ?>


    Die Variablen werden vorher gefüllt und dann die im Dokument enthaltenen eingefügt.
    Ich hoffe es hilft ein wenig das zu verstehen.

    Mit freundlichen Grüßen,
    karlsve
  17. also ...

    zu Einfärbung des HTML-Codes ... ich bin mir nicht sicher, ob das wirklich etwas bringt. Allerdings! (Auch) In meinem Lieblingseditor (Komodo Edit [v6] <andere habe ich auch probiert - die brachten nichts außer Chaos>) kannst beinahe alle Sprachen auswählen - und das zu jeder Zeit natürlich - unter 'View/View as Language/...Other'. (Da findest sicher einige, die dir unbekannt sind ;o)
    Alle Editoren (die besseren) müssen das können (wo liegt dein Problem?).

    Und zum Schluss, zum 'template engine': wikipedia
    PHP selbst ist bereits so entworfen, dass man programmiersprachliche Konstrukte mit der textuellen Ausgabe über Platzhalter bzw. gekennzeichnete Bereiche mischen kann. Die Verwendung einer gesonderten Template Engine für PHP ist deswegen eigentlich nicht erforderlich.
    'programmiersprachliche Konstrukte' ... 'textuellen Ausgabe über Platzhalter' ... (PLATZALTER! nach Platzhaltern sucht man nicht, sie HAT MAN EINFACH!!) das wird dann teils so wild, dass man aus Variable-variablen Variable-variablen machen kann ... und so fort. Dann weißt du - wo möglich - nicht mehr, ob zuerst die Henne, oder das Ei ... ???? (aber das ist natürlich auch nicht das Ziel)

    dennoch ... hier zwei Beispiele in einem Programm (source code):

    1. die Variante die uns @karlsve gezeigt hat (in meinem Test), die in einer Textpassage etwas sucht und ersetzt **, ... und

    2. das, was ich verwende. Diese Art ist bis zu ~10^3 mal schneller(!!), was man in der letzten Zeile der Ausgabe von beiden Tests sehen kann. (Es handelt sich dabei um die Schnelligkeit des Servers und nicht um die Schnelligkeit der Darstellung [rendering] im Browser!)
    Die Erklärung ist sehr einfach: ich verwende nicht 'suchen und ersetzen**', sondern 'text-concatenation'. No!? Dann "Mahlzeit" die Damen!! (aber auch die Herren :o) und viel Spaß beim Weitertesten.

    lg eure hemiola

    **) in einem Text nach irgend etwas zu suchen, ist eine hochkomplizierte Angelegenheit. Wer es nicht glaubt, sollte mal versuchen, so etwas zu programmieren ;o)
  18. @hemiolos: Ich glaube dein letzter Beitrag entstand aus Ignoranz heraus. Tempalte-Systeme, funktionieren *nicht* durch Suchen und Ersetzen. Von unerfahrenen Programmierern selbstgeschriebene Template-Systeme vielleicht schon. Professionelle jedoch nicht.

    Alle großen Template-Systeme kompilieren nämlich das Template mit der Designer freundlichen und auf Templates spezialisierten Syntax zu ... PHP Code! Da ist nichts mit langsamem Ersetzen. Am Ende wird einfach nur der schnelle PHP Code ausgeführt.

    Wenn dich genauer interessiert, wie das funktioniert, habe ich eine kleine Einführung geschrieben, in der man mit recht wenig Code ein voll funktionsfähiges Template-System schreibt. (Auch wenn ich die Nutzung von Twig natürlich empfehle.)

    Aber auch ohne diesen Punkt ist dein Benchmark etwas unfair: Um fair zu sein müsstest du zuerst die tausend Zeilen mit #content# generieren und dann erst #content# ersetzen. Du wirst sehen, dass geht deutlich schneller ;)
  19. Hm also dem OP gleich zu einem Framework zu raten ist denk ich zu viel des Guten, auch wenn es auf lange Sicht dem Programmierstil nicht schadet.

    Meiner Meinung nach gab es eine Notation um mehrzeilige Strings in PHP zu schreiben, welche selten genutzt wird:
    $string = <<<meinstring
    <html>
      <head>
      </head>
      <body>
        ...
       </body>
    </html>
    meinstring;

    Das ganze heißt glaub ich heredoc-String und ich glaube es wird von den meisten IDEs darin die HTML-Syntax korrekt gehighlighted.

    Grüße,
    Sektor
  20. sektor schrieb:
    ... Meiner Meinung nach gab es eine Notation um mehrzeilige Strings in PHP zu schreiben, welche selten genutzt wird:
    Es gab nicht nur, es gibt noch immer!. Ob es selten verwendet wird? Ich lebe oft und gern damit und kann allen raten, das zu tun. Gute Erfindung.
    Das ganze heißt glaub ich heredoc-String und ich glaube es wird von den meisten IDEs darin die HTML-Syntax korrekt gehighlighted
    Es ist richtig, auch dann, wenn du schon gepostetes wiederholst ;o)

    lg
  21. $string = <<<meinstring
    <html>
      <head>
      </head>
      <body>
        ...
       </body>
    </html>
    meinstring;


    und wieder was dazugelernt ^^
    gefällt mir sehr gut... ist mir irgendwie in meinen php-selbsttudien entgangen.
  22. Du hast natürlich recht hemiolos.
    Ich hatte nicht alle deiner links angeschaut, allerdings wäre es besser gewesen den Code direkt zu posten und zu erklären, statt einen eigenen unkommentierten Quellcode per Link anzugeben ;-)

    [Edit]

    Und zur Aussage "selten benutzt" habe ich mich hinreisen lassen, weil ich in meinem Umfeld niemanden kenne der davon überhaupt gebrauch macht obwohl es mir, wie du ja schon sagtest, sehr nützlich erscheint. ^^

    Grüße,
    Sektor

    Beitrag zuletzt geändert: 23.1.2011 15:01:13 von sektor
  23. Das kaum einer HEREDOC oder NOWDOC benutzt, ist sehr verständlich. Für normale Webseiten bietet sich ein Templatesystem einfach besser an, als irgendein limiterter HEREDOC String.

    Solche Sachen kommen normalerweise erst dann zum Einsatz, wenn maneinen längeren Text hat, in dem viele ' vorkommen. Also eigentlich nur, wenn man zu PHP kompiliert. Auch wenn du CLI Anwendungen entwickelst, wirst du sowas häufiger mal sehen.
  24. sektor schrieb:
    ...es mir, ... sehr nützlich erscheint. ^^


    nikic schrieb: Das kaum einer HEREDOC oder NOWDOC benutzt, ist sehr verständlich...


    un dann gib es diejenigen, die suchen und ersetzen ...

    Also da sieht man ganau, wo wir etwas einheitliches haben. Aber Varianz war schon immer ein Liebkind der natur ;o)

    lg

    p.s.: @sektor, du hast recht. Ich habe nur gedacht, so ein einfaches Ding braucht keine Erklärung. Werde mich bessern!

    Beitrag zuletzt geändert: 23.1.2011 21:15:15 von hemiolos
  25. hemiolos schrieb:
    nikic schrieb: Das kaum einer HEREDOC oder NOWDOC benutzt, ist sehr verständlich...


    un dann gib es diejenigen, die suchen und ersetzen ...

    Kann es sein, dass du einen Beitrag von mir überlesen hast? Ich habe da recht ausführlich zu dem Thema Stellung genommen.
  26. nikic schrieb:
    Kann es sein, dass du einen Beitrag von mir überlesen hast? Ich habe da recht ausführlich zu dem Thema Stellung genommen.
    wenn du das meinst, habe ich natürlich gelesen. und natürlich habe ich deine posting auch auf meinem lieblingportal 'stackoverflow' gelesen :o)
    dazu noch 2 vermerke:
    1. damit bin ich so in etwa einer meinung;
    2. regexp ist sehr resourcenfressend (wie in deinem beispiel auf stackoverflow).

    lg
  27. @hemiolos: Dann habe ich wahrscheinlich nicht gut genug erklärt, wie das funktioniert: Diese Regex Sachen, werden nur ein einziges Mal gemacht, um den PHP-Template-Code zu generieren. Dieser wird anschließend gecacht (normalerweise sogar über APC im Arbeitsspeicher).
    Wie lange der Vorgang des Generierens dauert ist im Endeffekt eigentlich vollkommen unbedeutend,, entscheidend ist nur, wie schnell das entstandene Template dann ausgeführt wird.

    Was Regex anbelangt: Unabhängig davon, dass die Regex-Sachen ja sowieso nur einmalig ausgeführt werden, ist die Annahme, dass Regex langsam sind nicht wirklich richtig. Ich muss aber zugeben, dass die dort genutzten schon recht alt sind (Oktober 2010) und ich das jetzt natürlich anders machen würde:
    a) Man sollte wahrscheinlich eine negated character group mit possesive quantifier benutzen:
    ~\{\s*+([^}]++)\s*+\}~
    Das würde der Regex-Engine das sämtliches Backtracking ersparen, was natürlich ein großer Vorteil ist, was Geschwindigkeit anbelangt.
    b) Es wäre eventuell sinnvoll '}' in Strings nicht als schließendes Zeichen zu werten:
    ~\{\s*+([^}'"]*+(?:(?:'[^'\\\\]*+(?:\\\\.[^'\\\\]*+)*+'|"^[^"\\\\](?:\\\\.[^"\\\\]*+)*+")[^}'"]*+)*+)\s*+\}~
    Das ganze wird dann aber schon etwas unübersichtlich für jemanden, der sich nicht sonderlich mit regulären Ausdrücken auskennt.

    Und da sieht mans schon: Einfach Twig benutzen :D Es ist einfach besser als schnell selbst was zusammenzuhauen ;)

    PS: Schön zuwissen, dass du auch StackOverflow nutzt :D
  28. nikic schrieb:
    ...
    ~\{\s*+([^}'"]*+(?:(?:'[^'\\\\]*+(?:\\\\.[^'\\\\]*+)*+'|"^[^"\\\\](?:\\\\.[^"\\\\]*+)*+")[^}'"]*+)*+)\s*+\}~
    Das ganze wird dann aber schon etwas unübersichtlich
    deine Worte in Gottes Ohren ;o))

    PS: Schön zuwissen, dass du auch StackOverflow nutzt :D
    Ja na sowas unerhörtes aber auch! So klein ist die Welt ... da kriegst Platzangst ;o)

    lg

    P.S.: nichts für ungut! Mit PHP versucht man dynamische Seiten hervorzuzaubern und mit Templates versucht man statisches ins dynamische hineinzuschmuggeln???? wenn du mich fragst ... oxymoron ;o)
  29. t*****b

    Wir reden gerade über ein grundlegendes Problem von PHP, dass es auf einer Seite einfach zu erlernen ist, viele jedoch, die keine Programmierspachen wie C++ oder Java kennen, nicht effizient und sauber mit PHP zurecht kommen, sondern umständlich bzw. quick-and-dirty programmieren. Das reicht für einen Hobbyprogrammierer zwar aus und das ist auch ok so, mit sauberem PHP hat das aber nichts zu tun.

    Wenn wir jedoch hier über dieses Thema sprechen wollen, müssen wir ganz klar zwischen sauberem Stil und einer sauberen Architektur sprechen.

    Sauberer Stil zB:
    - Variablennamen erkenntlich vergeben
    - Keine zig tausend Echos
    - Kommentare verwenden
    - Code dokumentieren
    - immer gleicher Aufbau der Scripte
    - Die PEAR-Codingstandards können eine Richtlinie darstellen.
    - uvm.

    Saubere Architektur:
    - streng relationale Datenbankstruktur verwenden
    - Objektorientierte Programmierung (zumindest bei größeren Projekten)
    -- Setter und Getter verwenden
    -- Prototyping
    - Dont repeat yourself (DRY)
    - Wenn möglich Model-View-Controller (MVC) benutzen oder zumindest Ausgabe nach der Logik
    - Testgetriebene Entwicklung
    - Caching kann sinnvoll sein
    - uvm.

    Das sind von mir nur einige Vorschläge, aber einiges davon mag unter allen, manches auch nur unter bestimmten Bedinungen Sinnvoll sein. Jedoch unterscheidet auch einiges davon einen Laien von einem Profi.
  30. h*h

    Servus,

    bin neu hier, aber werfe gleich mal ein, zwei Dinge in den Ring. Nehmen wir mal den Beispielcode und machen ein paar kleine Anpassungen:
    <html>
      <head>...</head>
      <body>
        <div id=content>
          <?php news() ; ?>
        </div>
      </body>
    </html>
    <?php
    exit(); // Ab hier endet das Seitenrendering
    
    function news() {
      if(section = news)  {
          echo "<h1>News</h1>";
          ....
      } else if (...)  {
              ...
      }
    }
    Das ist dann besonders effizient und aufgeräumt wenn man Schleifen durchläuft die komplexe Abfragen machen. Die function lässt sich natürlich aus auslagern und includen. Insbesondere wenn der Content re-used wird. Das würde ich nicht machen wenn die function Abhängigkeiten mit anderm Content der Seite hat.

    MVC würde ich erst bei komplexen Sites einsetzen, da die Lernkurve ganz schön hoch sein kann. Insbesondere Zend ist ja schon fast Quasi Standard. Wer jetzt nicht den Vorschlaghammer auspacken will kann ja vielleicht mal einen Blick auf FUEL werfen.

    HP
  31. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!