Basics - PHP-Syntax

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

  • Basics - PHP-Syntax

    hallo,

    bisher habe ich den code so geschrieben:
    PHP-Code:
    <?php
    $text
    ="variable";
    echo 
    "<table>";
    echo 
    "<tr>";
    echo 
    "<td>";
    echo 
    "1. zeile<br>";
    echo 
    "2. zeile: $text<br>";
    echo 
    "3. zeile";
    echo 
    "</td>";
    echo 
    "</tr>";
    echo 
    "</table>";
    ?>
    ich habe nun irgendwo hier im forum gelesen, dass man die vielen "echo" auch weglassen kann.

    folgender code funktioniert:
    PHP-Code:
    <?php
    $text
    ="variable";
    echo 
    "
    <table>
       <tr>
         <td>
           1. zeile<br>
           2. zeile: 
    $text<br>
           3. zeile
         </td>
      </tr>
    </table>
    "
    ?>
    diese schreibweise ist natürlich viel übersichtlicher, doch ist sie auch "korrekt"?
    wie soll man schreiben, was meinen die experten?

    gruss, wolfgang

  • #2
    ja ! ist korrekt !!!! du darft nur keine " verwenden !! z.b. für <td align="center"> !! weil dann ist der echostring ja unterbrochen !!! also dann nur ' verwenden !!

    Kommentar


    • #3
      die anführungszeichen sind schon klar!

      da hätte ich mir ja hunderte von "echo" sparen und erheblich übersichtlicher schreiben können.

      nur, steht das irgendwo in der dokumentation?

      Kommentar


      • #4
        ja ! ist korrekt !!!! du darft nur keine " verwenden !! z.b. für <td align="center"> !! weil dann ist der echostring ja unterbrochen !!! also dann nur ' verwenden !!

        klar darf man das ... du musst die " halt nur escapen. D.h. " = \"

        Code:
        bsp: <a href=\"#\"></a>

        Kommentar


        • #5
          jein

          du hast ja auch gewusst, dass du die " brauchst um den bereich zu kennzeichnen, der ausgegeben werden soll. und in der dokumentation bei php.net steht nix von verbotenen zeichen
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Original geschrieben von weserweb
            die anführungszeichen sind schon klar!

            da hätte ich mir ja hunderte von "echo" sparen und erheblich übersichtlicher schreiben können.

            nur, steht das irgendwo in der dokumentation?
            keine ahnung ob das in der dokumentation steht. ich denke aber nicht, dass da irgendwo steht, man sollte jede zeile einzeln per echo ausgeben.
            und zumindest der gesunde menschenverstand sagt einem doch, dass es unsinn wäre jede zeile einzeln auszugeben.
            aber der fehlt wohl einigen...

            du solltest allerdings den unterschied zwischen " " (doppelten anführungszeichen) und ' ' (einfachen anführungszeichen) kennen.

            wenn du die doppelten verwendest,
            beispiel:

            PHP-Code:
            echo "dies ist ein schöner satz"
            sucht der php interpreter nach irgendetwas was dort geparst werden muss, z.b. variablen.
            da es sich aber einfach nur um normalen text handelt (das kann auch html code sein), ist die suche vergeblich - also zeitverschwendung.

            und dafür gibt es die einfachen anführungszeichen.

            PHP-Code:
            echo 'dies ist ein schöner satz'
            das wird nun direkt ausgegeben.

            dieses nur grundsätzlich zum arbeiten mit echo, auch wenn das mit deinem code nichts zu tun hat.
            du musst hier aber, anders als zuvor geschrieben wurde, nichts mit \ *escapen*. das ist ein sehr häufig gemachter, völlig überflüssiger, fehler.

            wenn du etwas per echo ausgibst, z.b.

            PHP-Code:

            echo "<font color="$farbe">text</font>"
            würde das einen fehler verursachen.
            weshalb?
            php würde das " nach color= alle ende des echos interpretieren, dadurch entsteht der fehler.
            das *escapen* würde bedeuten, dass man vor alle " innerhalb des echos ein \ setzt. php wertet dies dann als normales zeichen, nicht als ende des echos.
            PHP-Code:
            echo "<font color=\"$color\">text</font>"
            das wird sehr häufig gemacht, ist aber falsch.
            ist etwa genauso unsinnig wie jede zeile einzeln per echo auszugeben.

            wie ich oben geschrieben habe, kannst du einfach und doppelte anführungszeichen für echo verwenden.

            und nun musst du zwei dinge wissen.
            1. nach dem html spezifikationen ist es egal ob man " oder ' verwendet.
            also:
            <font color="#FF0000">text</font>
            und
            <font color='#FF0000'>text</font>
            ist beides richtig.

            2. wenn du ein echo mit " " ausgibst, dann kannst du innerhalb des *echos* problemlos ' ' verwenden - und umgekehrt.

            nun setzt wieder der gesunden menschenverstand ein.

            denn mit dem wissen ist das *escapen* plötzlich völliger unsinn.

            anstatt
            PHP-Code:
            echo "<font color=\"$color\">text</font>"
            kann man einfach

            PHP-Code:
            echo "<font color='$color'>text</font>"
            schreiben.
            diese schreibweise ist sauberer und sieht auch viel netter aus.
            Zuletzt geändert von martin_de; 17.01.2003, 02:55.
            martin

            Kommentar


            • #7
              jedoch würde ich nicht alles mit echos ausgeben!

              PHP-Code:
              <?php
              $text
              ="variable";
              ?>
              <table>
                 <tr>
                   <td>
                     1. zeile<br>
                     2. zeile: $text<br>
                     3. zeile
                   </td>
                </tr>
              </table>
              <?php

              ?>
              so würde es auch funktionieren...
              und wird auch viel übersichtlicher und du musst nicht ' ' oder \" \" schreiben... bei grossen scripts wirst du es sicher merken....
              First: Things get worse under pressure.
              Second: If anything just cannot go wrong, it will anyway
              Third: A falling object will always land where it can do the most damage.

              Kommentar


              • #8
                @Martin_de:
                Auch wenn ich dir soweit zustimmen möchte, noch ein kurzer kommentar:
                du musst hier aber, anders als zuvor geschrieben wurde, nichts mit \ *escapen*. das ist ein sehr häufig gemachter, völlig überflüssiger, fehler.
                Warum sollte dies ein Fehler sein ? Abgesehen davon dass Fehler ja prinzipiell 'überflüssig' sind (außer man _möchte_ aus ihnen lernen). Da das 'Escapen' unterstützt wird, warum sollte ich es nicht verwenden ? Nur weil es auch andere Möglichkeiten gibt ? Scheint mir nicht ausreichend...
                'Escapen' ist ja nun nichts Schlimmes oder Verbotenes und widerspricht oder vestösst nicht gegen den von PHP gelieferten Rahmen der Sprache.



                Gruß,
                psyclonist

                Kommentar


                • #9
                  @Viper1985,

                  mit der von dir vorgeschlagenen notation wird die variable $text nicht ausgegeben.

                  da müsste dann noch rein:

                  PHP-Code:
                  <table>
                     <tr>
                       <td>
                         1. zeile<br>
                         2. zeile: [B]<?php $text ?>[/B]<br>
                         3. zeile
                       </td>
                    </tr>
                  </table>
                  aber sei's drum. mir ging es ja nur darum, ob man jede zeile mit "echo" beginnen muss, oder ob "blöcke" mit nur einem "echo" ok sind.
                  ich habe noch einmal im php-manual gesucht und dazu bisher nichts gefunden.

                  Kommentar


                  • #10
                    für eine mehrzeiligen block verwende ich die heredoc methode ..
                    die ist a) einfach b) brauchst nichts escapen c) variablen werden geparst

                    PHP-Code:
                    echo <<<HTML
                    <div align="center">
                      <b>Angemeldet als 
                    {$username}</b><br /><br/>
                      <a href="foobar.php?action=logout">abmelden</a>
                    </div>
                    HTML; 
                    funktioniert wunderbar
                    mfg,
                    [color=#0080c0]Coragon[/color]

                    Kommentar


                    • #11
                      scheint mir die beste lösung zu sein, zumal sie aich explizit im manual erwähnt wird.

                      dazu zitat:
                      It is very important to note that the line with the closing identifier contains no other characters, except possibly a semicolon. That means especially that the identifier may not be indented, and there may not be any spaces or tabs after or before the semicolon.
                      code funktioniert mit und ohne Semikolon. es scheint allerdings nicht zwingend notwendig zu sein.

                      Kommentar


                      • #12
                        ich hab mir angewöhnt überall eins zu machen .. auch vor einer schließenden, geschweiften klammer .. warum also nicht auch hier ?
                        mfg,
                        [color=#0080c0]Coragon[/color]

                        Kommentar


                        • #13
                          Vor einer schließenden, geschweiften klammer ?
                          In einem Codeblock ?

                          Kommentar


                          • #14
                            PHP-Code:
                            if (isset($foobar)) {

                              echo 
                            $foobar// das semikolon wäre hier nicht nötig, da php erkennt dass der befehl da enden muss ..


                            mfg,
                            [color=#0080c0]Coragon[/color]

                            Kommentar


                            • #15
                              Original geschrieben von Coragon Rivito

                              if (isset($foobar)) {

                              echo $foobar; // das semikolon wäre hier nicht nötig, da php erkennt dass der befehl da enden muss ..

                              }
                              ohne das semikolon erhält man einen 'parse errror'.

                              probiers aus:

                              PHP-Code:
                              <?php

                              error_reporting 
                              (E_ALL);

                              $foobar 'DasFunktioniertNicht';

                              if (isset(
                              $foobar)) {

                                echo 
                              $foobar

                              }

                              ?>



                              Original geschrieben von Psyclonist
                              @Martin_de:
                              Auch wenn ich dir soweit zustimmen möchte, noch ein kurzer kommentar:

                              Warum sollte dies ein Fehler sein ? Abgesehen davon dass Fehler ja prinzipiell 'überflüssig' sind (außer man _möchte_ aus ihnen lernen). Da das 'Escapen' unterstützt wird, warum sollte ich es nicht verwenden ? Nur weil es auch andere Möglichkeiten gibt ? Scheint mir nicht ausreichend...
                              'Escapen' ist ja nun nichts Schlimmes oder Verbotenes und widerspricht oder vestösst nicht gegen den von PHP gelieferten Rahmen der Sprache.



                              Gruß,
                              psyclonist
                              ich betrachte es deshalb als fehler, weil das escapen eine notlösung darstellt um syntaxfehler zu vermeiden.
                              man darf in php nicht auf diese art und weise " " innerhalb eines
                              echo "<font color="#FF0000">$bla</color>";
                              verwenden. das ist eine falsche schreibweise und erzeugt einen syntaxfehler.
                              das escapen dient dann nur dazu die falsche schreibweise vor dem php interpreter zu *verstecken*.
                              dadurch wird aus der falschen schreibweise aber nicht plötzlich eine korrekte, es erzeugt nur keinen fehler mehr.
                              die richtige wäre mit " " und ' ' zu arbeiten. dann gibt es keinen grund etwas zu *verstecken*, weil die syntax völlig korrekt ist.

                              ich denke, nur weil man in php etwas tun *kann*, muss man das noch lange nicht tun - nur weil es keinen fehler verursacht.
                              man könnte bei der programmierung auch zwingend auf 'register_globals' setzen. möglich wäre das, php unterstützt dies (optional).
                              aber es macht wenig sinn bei dieser mit 'register_globals' verbundenen problematik und der gewissheit, dass diese option in zukünftigen php versionen nicht länger existiert.
                              aber verboten ist es natürlich nicht.

                              php ist (leider) sehr fehlertollerant und durch ein niedrig gesetztes error_reporting() kann man bequem die eine oder andere schlamperei bei der programmierung vertuschen.
                              dadurch wird aus unsauberer programmierung aber nicht plötzlich eine gute, nur *weil es funktioniert*.
                              und sinnloses escapen fällt bei mir unter unsauber.

                              martin
                              martin

                              Kommentar

                              Lädt...
                              X