wann " und wann '?



  • Aber es gibt keine richtlinie dafür?! ist ja doof 😞



  • Nein, wieso sollte es?
    Es gibt ja auch keine Richtlinie, ob man if($test) oder if( $test ) schreiben muss.

    Der Text in "" wird schlichtweg im Gegenteil zu einem in '' geparst (wie Neku schon sagte), wann du was nutzt ist völlig dir überlassen; bzw. den Gegebenheiten nach.



  • Weil es doch für jeden Scheiss richtlinien gibt?!



  • kkkkkkkkkkkkkkkkk schrieb:

    Es ist schneller wenn du ' in Verwendung mit dem .-Operator verwendest. Macht zwar denke ich nicht viel aus, aber imo ist das übersichtlicher.

    Genau das ist es nicht. Wenn du mir nicht glaubst schau dir die Parser-Dateien vom PHP-Source an.



  • Neku schrieb:

    kkkkkkkkkkkkkkkkk schrieb:

    Es ist schneller wenn du ' in Verwendung mit dem .-Operator verwendest. Macht zwar denke ich nicht viel aus, aber imo ist das übersichtlicher.

    Genau das ist es nicht. Wenn du mir nicht glaubst schau dir die Parser-Dateien vom PHP-Source an.

    Unsinn, denn genau das ist es. Wenn du mir nicht glaubst, bemüh mal dein Hirn (oder Google). Glaubst du das Parsen eines ""-Strings geht kostenlos und das ''-Äquivalent fällt einfach so vom Himmel? 🙄



  • In der Tat war die ""-Variante bis PHP Version 5 (4.x?) wesentlich langsamer als die ''-Version. Aber inzwischen wird der gröbste Overhead wegoptimiert. Gänzlich entfallen tut er aber - logisch wie technisch bedingt - nicht.



  • Der vorhandene Overhead hat es aber durchaus in sich. Deine Behauptung, es gäbe keinen relevanten Performance-Unterschied, gilt für Skripte auf deinem lokalen Rechner. Aber sobald's an's Eingemachte geht und eine Webseite z.B. tausende Aufrufe hat, merkt man den Unterschied doch sehr deutlich.
    Um sich mal einen Eindruck zu machen: http://blog.libssh2.org/index.php?/archives/28-How-long-is-a-piece-of-string.html



  • Das sie "nicht relevant" wären habe ich auch nicht gesagt 😉
    Naja gut, etwas zu euphemistisch hab ich's vielleicht schon beschrieben 🙄

    Übrigens sehr guter Link!



  • Wieso sollte es für PHP einen nicht-vernachlässigbaren Unterschied machen, ob es Variablen innerhalb oder außerhalb eines Strings geparst werden? Beides erledigt der Lexer.
    Bei 'abc ' . $blubb . ' def' erkennt der Lexer: konstanter String, Operator, Variable, Operator, konstanter String. Bei der Ausführung werden zwei Strings und die Variable durch den .-Operator verbunden.
    Bei "abc $blubb def" erkennt der Lexer: String, Variable, String. Im Parser wird nun das Verhalten für in Strings enthaltenen Variablen definiert - die Variable wird ersetzt. Die Variablen werden nicht bei der Ausführung geparst.
    Wer mir noch immer nicht glaubt kann sich gerne die Dateien Zend\zend_language_scanner.l und Zend\zend_language_scanner.y ansehen.

    Hinweis: Bei meinen Angaben geht es um PHP 5.2.



  • Aber 'blubb ohne variable' ist schneller als "blubb ohne variable", und um das geht es hier.

    MfG SideWinder



  • Nein, es ging um das oben genannte Beispiel.

    *edit*
    Habe gerade nochmal nachgesehen. Bei deinem Beispiel ist der Unterschied ebenfalls vernachlässigbar, da "-Strings, die keine $-Zeichen enthalten, wie '-Strings nur mit einem einzigen Regex gelesen werden.


Anmelden zum Antworten