PHP ‚ vs.“ vs. <<<

I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

VS

Singlequotes

Singlequotes sind einfache Stringfunktionen, das bedeutet es wird weder erweitert, noch funktionieren besondere Formatmaskierungen (siehe Doublequotes)

<?php
echo 'das ist ein String';
echo 'das ist ein String
mit Zeilenumbruch im Quellcode';
echo 'das ist ein String mit \n (Newline) und "Doublequote"';
echo 'das ist ein String mit \\ einem backslash und \$ Dollar-Zeichen';
?>

dies erzeugt folgenden Quelltext. Achtung aus Schönheit wurde jedes echo in einer neuen Zeile begonnen. Original wird jedes Echo nach dem letzten geschrieben.

das ist ein String
das ist ein String
mit Zeilenumbruch im Quellcode
das ist ein String mit \n (Newline) und "Doublequote"
das ist ein String mit \ einem backslash und \$ Dollar-Zeichen

Wie man erkennt wird das Newline nicht übersetzt. Dies gilt auch für alle anderen Möglichkeiten, die es in doublequote gibt. Ebenfalls funktioniert es auch nicht, ein append auszuführen.
Das bedeuted, Variablen im Text werden als text ausgegeben und nicht mit dem eigentlichen Variableninhalt.

<?php
$testvariable = 'test';
echo 'das ist ein $testvariable';
?>

ergibt dann entsprechend

das ist ein $testvariable

Doublequotes

Doublequotes eignen sich hervorragen zum erweitern von Texten, zusätzlich erlauben Sie auch noch verschiedene Spezialcharakter.

  • \n – linefeed (Zeilenumbruch)
  • \r – carriage return (zurück zum Zeilenanfang)
  • \t – tab (Tabulator)
  • \v – vertical tab (vertikaler Tabulator seit PHP 5.2.5)
  • \\ – backslash (\)
  • \$ – dollar ($)
  • \“ – doubleqoutes („)

Wie man sieht, muss man hier einiges Escapen, wenn man es innerhalb des Textes braucht.

<?php
echo "das ist ein String";
echo "das ist ein String
         mit Zeilenumbruch im Quellcode";
echo "das ist ein String mit \n (Newline) und 'Singlequotes'";
echo "das ist ein String mit \\ einem backslash und \$ Dollar-Zeichen";
?>

dies erzeugt folgenden Quelltext. Achtung auch hier gilt, jedes Echo wird nach dem letzten geschrieben.

das ist ein String
das ist ein String
 mit Zeilenumbruch im Quellcode
das ist ein String mit 
 (Newline) und 'Singlequotes'
das ist ein String mit \ einem backslash und $ Dollar-Zeichen

Wie man erkennt wird das \n übersetzt, also im Quelltext ist ein Zeilenumbruch. Dies gilt auch für alle anderen oben genannten Möglichkeiten (und noch viele mehr).
Ebenfalls funktioniert es auch, ein append auszuführen.
Das bedeuted, Variablen im Text werden, wenn existiert, mit dem entsprechenden Wert.

<?php
$testvariable = 'test';
echo "das ist ein $testvariable";
?>

ergibt dann entsprechend

das ist ein test

Dabei ist zu beachten, dass vor und nach der Variable ein Leerzeichen sein muss, oder das {} verwendet wird

<?php
$testvariable = 'test';
// geht nicht weil es nicht existiert
echo "das waren $testvariables";
// geht
echo "das waren {$testvariable}s";
echo "das waren ${testvariable}s";
?>

Möchte man Array- oder Objektwerte verwenden, sollte man hier die PHP-Dokumentation verwenden. Da hier einiges mehr schief gehen kann.
ein paar Beispiele (direkt von der PHP.NET-Seite):

<?php
// These examples are specific to using arrays inside of strings.
// When outside of a string, always quote array string keys and do not use
// {braces}.
// Show all errors
error_reporting(E_ALL);
$fruits = array('strawberry' => 'red', 'banana' => 'yellow');
// Works, but note that this works differently outside a string
echo "A banana is $fruits[banana].";
// Works
echo "A banana is {$fruits['banana']}.";
// Works, but PHP looks for a constant named banana first, as described below.
echo "A banana is {$fruits[banana]}.";
// Won't work, use braces.  This results in a parse error.
echo "A banana is $fruits['banana'].";
// Works
echo "A banana is " . $fruits['banana'] . ".";
// Works
echo "This square is $square->width meters broad.";
// Won't work. For a solution, see the complex syntax.
echo "This square is $square->width00 centimeters broad.";
?>

Wann verwenden?

Ich persönlich verwende eigentlich immer Singleqotes, da ich hier gezwungen bin, sauberer zu arbeiten.

Zusätzlich ist aber zu sagen, dass sich Singlequotes sehr gut für HTML-Code eignen, da ich doubleqoutes nicht Escapen muss. Und das Escapen ist ja die Fehlerquelle Nummer eins.

<?php
echo '<div class="test" id="testdiv"></div>';
?>

Ich persönlich verwende das recht selten. da hier Fehler entstehen können, die durch sauberes Coden nicht entstehen.Zusätzlich ist aber zu sagen, dass ich doublequotes zum Beispiel für CSV-Exporte verwende, da dort die Möglichkeiten hilreich sind.
Ein Beispiel:

<?php
echo "Zeile1\twert1\twert2\twert3\n";
echo "Zeile2\twert1\twert2\twert3\n";
?>

Ok, der Tabulator ist ein schlechtes Beispiel, aber so siehts dann ungefähr aus:

Zeile1  wert1   wert2   wert3
Zeile2  wert1   wert2   wert3

VS

Heredocs

Nowdocs (ab PHP5.3)

Comming soon

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

You may use these HTML tags and attributes

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

But, it will became readable code