PHP'de Heredoc Dizeleri Nedir ve Ne işe Yarar?

MG Yaşı
1 Yıl 3 Ay 9 Gün
Katılım
24 Ara 2024
Konular
0
Mesajlar
179
Tepkime puanı
21
Puan
43
1.jpg

PHP'de Heredoc Dizeleri Nedir ve Ne işe Yarar?
PHP, tek veya çift tırnaklı dizeleri bildirmek için heredoc ve newdoc sözdiziminde iki alternatif sunar.
  • Tek tırnak içindeki dize kaçış karakterlerini yorumlamaz ve değişkenleri genişletmez.
  • Öte yandan, kendisi çift tırnak işareti içeren çift tırnaklı bir dize bildirirseniz, "\" sembolüyle onu kaçırmanız gerekir. Heredoc sözdizimi kullanışlı bir yöntem sağlar.

PHP'de Heredoc Dizeleri​

PHP'deki heredoc dizeleri çift tırnak işaretleri olmadan çift tırnak işaretli dizelere çok benzer. Bu, tırnak işaretlerini kaçırmaları ve değişkenleri genişletmeleri gerekmediği anlamına gelir.

Heredoc Sözdizimi​

$str = <<<IDENTIFIER
place a string here
it can span multiple lines
and include single quote ' and double quotes "
IDENTIFIER;

İlk olarak, "<<<" operatörüyle başlayın. Bu operatörden sonra bir tanımlayıcı, ardından bir yeni satır sağlanır. Dizenin kendisi takip eder ve ardından tırnak işaretini kapatmak için aynı tanımlayıcı tekrar gelir. Dize birden fazla satıra yayılabilir ve tek tırnak işareti (') veya çift tırnak işareti (") içerebilir.

Kapanış tanımlayıcısı boşluk veya sekme ile girintilenebilir, bu durumda girinti doc dizesindeki tüm satırlardan kaldırılır.

Örnek​

Tanımlayıcı yalnızca alfanümerik karakterler ve alt çizgiler içermeli ve bir alt çizgi veya rakam olmayan bir karakterle başlamalıdır. Kapanış tanımlayıcısı noktalı virgül (;) dışında başka hiçbir karakter içermemelidir. Ayrıca, kapanış tanımlayıcısından önceki ve sonraki karakter yalnızca yeni satır karakteri olmalıdır.

Aşağıdaki örneğe bir göz atın.

PHP:
<?php
$str1 = <<<STRING
   Hello World
PHP Tutorial
         by TutorialsPoint
STRING;

echo $str1;
?>

Aşağıdaki çıktıyı üretecektir :

Hello World
PHP Tutorial
by TutorialsPoint

Örnek​

Kapanış tanımlayıcısı, düzenleyicideki ilk sütundan sonra girinti içerebilir veya içermeyebilir. Girinti varsa, kaldırılacaktır. Ancak, kapanış tanımlayıcısı gövdenin herhangi bir satırından daha fazla girintili olmamalıdır. Aksi takdirde, bir ParseError yükseltilecektir. Aşağıdaki örneğe ve çıktısına bir göz atın.

PHP:
<?php
$str1 = <<<STRING
   Hello World
PHP Tutorial
   by TutorialsPoint
STRING;
        
echo $str1;
?>

Aşağıdaki çıktıyı üretecektir :
PHP Parse error: Invalid body indentation level
(expecting an indentation level of at least 16) in hello.php on line 3

Örnek​

Bir heredoc'daki tırnak işaretlerinin kaçışına gerek yoktur, ancak PHP kaçış dizileri yine de kullanılabilir. Heredoc sözdizimi de değişkenleri genişletir.

PHP:
<?php
$lang="PHP";
echo <<<EOS
Heredoc strings in $lang expand vriables.
The escape sequences are also interpreted.
Here, the hexdecimal ASCII characters produce \x50\x48\x50
EOS;
?>

Aşağıdaki çıktıyı üretecektir :

Heredoc strings in PHP expand vriables.
The escape sequences are also interpreted.
Here, the hexdecimal ASCII characters produce PHP

PHP'de Nowdoc Dizeleri​

PHP'deki nowdoc dizesi, heredoc dizesine benzer; ancak değişkenleri genişletmez ve kaçış dizilerini yorumlamaz.

PHP:
<?php
$lang="PHP";

$str = <<<'IDENTIFIER'
This is an example of Nowdoc string.
   it can span multiple lines
and include single quote ' and double quotes "
   IT doesn't expand the value of $lang variable
IDENTIFIER;

echo $str;
?>

Aşağıdaki çıktıyı üretecektir :

This is an example of Nowdoc string.
it can span multiple lines
and include single quote ' and double quotes "
IT doesn't expand the value of $lang variable

Nowdoc'un sözdizimi, heredoc'un sözdizimine benzerdir, ancak "<<<" operatörünü izleyen tanımlayıcının tek tırnak içine alınması gerekir. Nowdoc'un tanımlayıcısı da heredoc tanımlayıcısı için kuralları izler.

Heredoc dizeleri kaçış olmadan çift tırnaklı dizeler gibidir. Nowdoc dizeleri kaçış olmadan tek tırnaklı dizeler gibidir.
 
Geri
Üst