Dalam bahasa pemrograman tipe data strings adalah tipe data yang paling umum digunakan (setelah integer tentunya). Dalam PHP sting dapat ditulis dalam empat cara antara lain single quoted, double quoted, heredoc, dan nowdoc. Untuk itu tulisan ini akan mendeskripsikan empat tipe penulisan tersebut dan perbedaan mendasarnya.

Single Quoted

Single Quotes adalah cara paling simple dan umum baik di PHP maupun di bahasa pemrograman lain. Backlash (\) digunakan untuk escape. Single quotes dapat digunakan pada one line dan multiple line. Variabel apapun yang berada dalam single quotes akan tetap menghasilkan string dan bukan variabel. 

Double Quoted

Perbedaan mendasar dari single quoutes dan double quotes adalah variabel yang berada dalam string ini akan di parsing (diexpand). Selain menggunakan backlash (\) sebagai escape character, beberapa hal yang perlu diperhatikan dalam escape pada double quotes antara lain seperti di bawah ini.

Sequence Meaning
\n linefeed (LF or 0x0A (10) in ASCII)
\r carriage return (CR or 0x0D (13) in ASCII)
\t horizontal tab (HT or 0x09 (9) in ASCII)
\v vertical tab (VT or 0x0B (11) in ASCII) (since PHP 5.2.5)
\e escape (ESC or 0x1B (27) in ASCII) (since PHP 5.4.4)
\f form feed (FF or 0x0C (12) in ASCII) (since PHP 5.2.5)
\\ backslash
\$ dollar sign
\" double-quote
\[0-7]{1,3} the sequence of characters matching the regular expression is a character in octal notation, which silently overflows to fit in a byte (e.g. "\400" === "\000")
\x[0-9A-Fa-f]{1,2} the sequence of characters matching the regular expression is a character in hexadecimal notation
\u{[0-9A-Fa-f]+} the sequence of characters matching the regular expression is a Unicode codepoint, which will be output to the string as that codepoint's UTF-8 representation (added in PHP 7.0.0)

asdasd

Heredoc

Cara ketiga dan lumayan sering saya gunakan adalah heredoc. Terutama untuk memparsing variabel dan agar kode lebih enak dilihat. Pada IDE modern seperti sublime, jetbrains, dan vsCode HTML, CSS, dan JS yang di parsing dalam heredoc akan dirender sebagai html/css/js sehingga debugging akan lebih mudah.

Heredoc ditandai dengan operator <<< diikuti dengan identifiernya. String dapat dituliskan setelah idetifier dituliskan (pastikan ada space antara identifier dan string yang ingin kita tulis. Selanjutnya untuk mengakhiri string maka kita tulis kembali identifier di akhir string. Kekurangan besar dari heredoc adalah closing identifier harus tidak memiliki indent/space sehingga akhir kode jadi tidak terlalu nyaman dilihat. Variabel yang ada dalam string ini akan diexpand sama seperti double quotes.

Warning

It is very important to note that the line with the closing identifier must contain no other characters, except a semicolon (;). That means especially that the identifier may not be indented, and there may not be any spaces or tabs before or after the semicolon. It's also important to realize that the first character before the closing identifier must be a newline as defined by the local operating system. This is \n on UNIX systems, including Mac OS X. The closing delimiter must also be followed by a newline.

If this rule is broken and the closing identifier is not "clean", it will not be considered a closing identifier, and PHP will continue looking for one. If a proper closing identifier is not found before the end of the current file, a parse error will result at the last line.

Example #1 Invalid example

<?php
class foo {
    public 
$bar = <<<EOT
bar
    EOT;
}
// Identifier must not be indented
?>

Example #2 Valid example

<?php
class foo {
    public 
$bar = <<<EOT
bar
EOT;
}
?>

Heredocs can not be used for initializing class properties. Since PHP 5.3, this limitation is valid only for heredocs containing variables.

Seperti yang saya tuliskan sebelumnya salah satu kekurangan heredoc adalah kode jadi tidak enak dilihat karena closing identifier yang harus tanpa indent. Anda yang terbiasa dengan space/tab sebagai indent akan sangat terganggu dengan hal ini. Contohnya adalah kode berikut.

// Static variables
function foo()
{
    static 
$bar = <<<LABEL
Nothing in here...
LABEL;
}

Penutup string menjadi sejajar dengan function sehingga akan sulit untuk menutup bracket function pada banyak IDE. Namun advantage yang anda dapat adalah kemudahan debugging.

Nowdoc

Nowdoc dapat dikatakan sebagai versi single quotes dari heredoc. Dengan kata lain nowdoc tidak akan melakukan parsing/expand variable yang ada di dalam string nowdoc. Akan sangat berguna untuk melakukan embedding PHP code atau block text yang besar tanpa harus melakukan escaping.

Nowdoc ditandai dengan operator <<< diikuti dengan identifier dengan single quotes (contoh <<<'JS'). String dapat dituliskan setelah identifier dan diakhiri dengan closing identifier tanpa single quotes dengan aturan penulisan closing sama dengan heredoc.

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;

Demikian hal singkat yang bisa saya bagikan mengenai string dalam PHP. Semoga membantu dan Happy Coding!


Sumber:

http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc