Bandwurmzeilen in PHP



  • Hio!

    Mir fällt immer wieder beim Programmieren mit PHP auf (so zumindest bei mir), dass ich manchmal wahre Bandwurmcodes raushaue. Das liegt einmal an der Ausgabe mittels HTML und andereseits an PHP selbst wo ein $_GET['Bla'] doch recht lange wirkt, wenn man kompaktere Codezeilen aus C++ gewöhnt ist *g*.
    Das ist auch das eigentliche Problem - programmieren mit C++ ist für mich z.B. deutlich übersichtlicher (und daher auch etwas einfacher) als mit PHP.
    Gibt es da Möglichkeiten/Techniken/Ideen wie ich meine PHP Zeilen kürzer hinbekomme? Bzw. übersichtlicher? (mal abgesehen von Syntax-Highlighting und einrücken bei "{" etc.)
    Hier mal ein typisches Beispiel:

    //einfaches Tabellenlayout:
    echo "<tr><td><p>".$tName[0]."</p></td><td></td><td><p>".$tName[1]."</p></td><td></td><td><p>".$tName[2]."</p></td><td></td><td><p>".$tName[3]."</p></td><td></td></tr>";
    
    //durchsuchen eines Ordners (nach PHP Spezifikationen so korrekt)
    while (false !== ($file = readdir($dir))) { 
        //bla 
    }
    

    P.S.: Und nun sagt nicht "schreib weniger in eine Zeile", wenn dann konkrete Vorschläge bei welchen Schlagwörter ich wie umbrechen sollte.



  • Was willst du denn sonst machen, ausser den Code auf mehr Zeilen verteilen? Im HTML geht nun mal viel Code für Tags drauf.
    Bau ne Tabelle halt so auf

    echo "<table>";
    echo "<tr>";
    echo "<td> Hello world </td>";
    echo "</tr>";
    echo "</table>";
    

    Das erzeugt den selben Code und ist sowieso übersichtlicher zu lesen als wenn alles in einer Zeile steht. Kann natürlich sein, das die einzelnen echo Aufrufe ein Paar Nanosekunden mehr Rechenzeit fressen 🙂



  • 1. dein beispiel ist prädestiniert für eine schleife 😉
    2. perspektivisch: trenne html von php, soweit wie möglich.
    funktionen wäre für den anfang eine gute idee.
    später dann konzepte dazu erlesen. es gibt derer viele.



  • elise schrieb:

    1. dein beispiel ist prädestiniert für eine schleife 😉
    2. perspektivisch: trenne html von php, soweit wie möglich.
    funktionen wäre für den anfang eine gute idee.
    später dann konzepte dazu erlesen. es gibt derer viele.

    zu 1: Das ist ein innerer Teil einer Schleife 😉 Ist ne einfache Gallerie, die Bilder anzeigt und darunter deren Namen.

    Welche Konzepte z.B.? Ich habe schon eine interne PHP Datei, wo alle wichtigen PHP Funktionen abgelegt sind, doch an irgendeiner Stelle muss ich ja auch mal ein wenig HTML output haben..



  • schau dir mal die templateengine SMARTY an



  • PRIEST schrieb:

    schau dir mal die templateengine SMARTY an

    diese, oder es existieren auch leichtere möglichkeiten, für kleinere projekte. vlib ist ganz übersichtlich.
    oder selbstgemachte template engines.
    große templateengines kosten zeit. ist immer ein abwägen.
    für kleinere lernprojekte lohnt selbermachen.

    schau dir auch mal mvc an, als konzept, und lese perspektivisch zu frameworks.

    da gibt es viel zu forschen.

    ps: es gibt auch verschachtelte schleifen 😉



  • @Pille456
    Mal ne Gegenfrage: Wie würdest du das in C++ lösen? Die HTML-tags müssten so oder so geschrieben werden (mal von templates abgesehen). Würdest du meinen, dass std:ostringstream sich da besser machen würde?



  • Cpp_Junky schrieb:

    Das erzeugt den selben Code und ist sowieso übersichtlicher zu lesen als wenn alles in einer Zeile steht. Kann natürlich sein, das die einzelnen echo Aufrufe ein Paar Nanosekunden mehr Rechenzeit fressen 🙂

    Nein, das Gegenteil ist der Fall, weil nicht bei jedem Punktoperator in PHP intern ein neuer String alloziert und aus den bereits bestehenden gebastelt werden muss 😉

    Man sollte allgemein, wenn man verschiedene Strings und Variablen mit echo ausgibt, den Komma-Operator verwenden, der dort eine Sonderfunktion innehat.



  • Hmm das ist interessant, wusste ich selber noch gar nicht. Werde ich wohl mal ein paar Projekte danach durchstöbern müssen.
    @witte: Hm da hast du wohl recht, aber die Ausgabe ist bei C++ teilweise doch deutschland anders. Also ein einfaches cout << ""; ist da doch irgendwo kürzer(wenn ich mal von irgendwelchen Grafik/GUI-Libs absehe), aber vielleicht ist das auch nur Gewöhnungssache.
    Momentan finde ich es nur schwer (wenn wir mal nach dem MVC-Modell gehen) die View-Schicht und die Control-Schicht bei PHP exakt zu trennen.



  • Pille,

    $ist = " ist ";
    echo "Dies", $ist, 1, " Test!";
    

    vs.

    string ist = " ist ";
    cout << "Dies" << ist << 1 << " Test!";
    

    Ich sehe den gravierenden Unterschied nicht 😉

    P.s. Unteres ist Pseudo-C++, sollte aber syntaktisch hinkommen. Eher wird es noch komplizierter durch Namespaces, int-to-string-Konversion und Pointerarithmetik.



  • Pille456 schrieb:

    Hio!

    Gibt es da Möglichkeiten/Techniken/Ideen wie ich meine PHP Zeilen kürzer hinbekomme? Bzw. übersichtlicher?

    Kürzer und übersichtlicher:

    <?php .hier datenbeschafung und request-behandlung...... ?>
    <html>.....
    <table>
    <?php foreach($information as $tName) { ?>
    <tr>
        <?php foreach($tName as $wert){ ?>
        <td colspan="2">
           <p><?php echo $wert; ?></p>
        </td>
        <?php }  ?>
    </tr>
    <?php } ?>
    </table>
    

    kürzer

    echo '<tr><td><p>'.implode('</p></td><td></td><td><p>',$tName).'</p></td><td></td></tr>';
    

    mir wäre lieber die erste variante.
    Templaten müssen nicht unbedingt da sein, aber die Datenbeschafungslogik muss von Ausgabelogik sichtbar getrennt werden.



  • Pille456 schrieb:

    Hio!

    Mir fällt immer wieder beim Programmieren mit PHP auf (so zumindest bei mir), dass ich manchmal wahre Bandwurmcodes raushaue. Das liegt einmal an der Ausgabe mittels HTML und andereseits an PHP selbst wo ein $_GET['Bla'] doch recht lange wirkt, wenn man kompaktere Codezeilen aus C++ gewöhnt ist *g*.
    Das ist auch das eigentliche Problem - programmieren mit C++ ist für mich z.B. deutlich übersichtlicher (und daher auch etwas einfacher) als mit PHP.
    Gibt es da Möglichkeiten/Techniken/Ideen wie ich meine PHP Zeilen kürzer hinbekomme? Bzw. übersichtlicher? (mal abgesehen von Syntax-Highlighting und einrücken bei "{" etc.)
    Hier mal ein typisches Beispiel:

    //einfaches Tabellenlayout:
    echo "<tr><td><p>".$tName[0]."</p></td><td></td><td><p>".$tName[1]."</p></td><td></td><td><p>".$tName[2]."</p></td><td></td><td><p>".$tName[3]."</p></td><td></td></tr>";
    
    //durchsuchen eines Ordners (nach PHP Spezifikationen so korrekt)
    while (false !== ($file = readdir($dir))) { 
        //bla 
    }
    

    P.S.: Und nun sagt nicht "schreib weniger in eine Zeile", wenn dann konkrete Vorschläge bei welchen Schlagwörter ich wie umbrechen sollte.

    Wie wäre es, einfach mal ein paar Zeilenschaltungen einbauen und vernünftig einrücken. Um Dein Beispiel umzusetzen:

    echo "<tr>",
           "<td><p>", $tName[0], "</p></td>",
           "<td></td>",
           "<td><p>", $tName[1], "</p></td>",
           "<td></td>",
           "<td><p>", $tName[2], "</p></td>",
           "<td></td><td><p>", $tName[3], "</p></td>",
           "<td></td>",
         "</tr>";
    

    Noch besser wäre es, PHP zu nutzen. Etwa so:

    <tr>
      <td>
        <p><?= $tName[0] ?></p>
      </td>
      <td></td>
      <td>
        <p><?= $tName[1] ?></p>
      </td>
      <td></td>
      <td>
        <p><?= $tName[2] ?></p>
      </td>
      <td></td>
    </tr>
    

    Ich bin kein php-Programmierer sondern bevorzuge auch für die Webprogrammierung C++. Dennoch kann auch ich Dein Argument, dass es in C++ kürzer wäre nicht nachvollziehen.



  • man kann sich auch html klassen aus dem Inet besorgen oder selberschreiben dann kann man ganz normal html ohne echo in die php files schreiben, was ich persönlich besesr fände als php in ein htmlfile. Ambesten ist jedoch immernoch die template variante :D! Jedoch nicht bei kleinen Projekten wie simple abfragen, dass ist klar


Anmelden zum Antworten