Rumah >pembangunan bahagian belakang >masalah PHP >Editor akan membantu anda mempelajari pembatas Adakah terdapat sebarang perbezaan antara nowdoc dan heredoc?

Editor akan membantu anda mempelajari pembatas Adakah terdapat sebarang perbezaan antara nowdoc dan heredoc?

醉折花枝作酒筹
醉折花枝作酒筹asal
2021-08-02 10:58:252317semak imbas

Dalam artikel sebelum ini, kami belajar tentang EOF dalam PHP Jika anda memerlukannya, sila baca "Apa itu heredoc? Apa yang boleh dilakukan untuk PHP? 》. Kali ini kami akan memperkenalkan kepada anda perbezaan antara nowdoc dan heredoc Anda boleh merujuknya jika perlu.

Di bahagian sebelumnya, editor memperkenalkan heredoc kepada semua orang, tetapi nampaknya nowdoc tidak diperkenalkan. Tetapi ini tidak berlaku. Editor juga memperkenalkan nowdoc kepada semua orang, tetapi editor tidak memberitahu semua orang istilah itu. Tetapi mari kita lihat pada nowdoc.

Mula-mula mari kita lihat sedikit berangan.

<?php
$str = <<<&#39;EOD&#39;
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;
/* 含有变量的更复杂的示例 */
class foo
{
    public $foo;
    public $bar;
    function foo()
    {
        $this->foo = &#39;Foo&#39;;
        $this->bar = array(&#39;Bar1&#39;, &#39;Bar2&#39;, &#39;Bar3&#39;);
    }
}
$foo = new foo();
$name = &#39;MyName&#39;;
echo <<<&#39;EOT&#39;
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital &#39;A&#39;: x41
EOT;
?>

Ini tidak jelas dengan cara ini. Mari kita ambil contoh daripada artikel sebelumnya dan bandingkannya.

<?php
$name="runoob";
$a= <<<EOF
        "abc"$name
        "123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>

Mari lihat dua contoh ini dan ketahui bahawa perbezaan terbesar ialah perkataan EOF tidak diperlukan dalam nowdoc, ia memerlukan petikan tunggal, tetapi dalam heredoc, ia tidak diperlukan tanda petikan.

Inilah perbezaan yang kami rasai secara intuitif. Mari kita bincangkan secara terperinci perbezaan antara nowdoc dan heredoc.

heredoc menggunakan 1b9a1dc80266cb7e53705ca491c9c9b2change()} yang disertakan dalam kurungan kerinting untuk mengelakkan beberapa kesamaran. Jika anda ingin mengeluarkannya sebagaimana adanya, anda boleh menggunakan watak melarikan diri yang legenda Watak melarikan diri itu sendiri boleh dikeluarkan menggunakan watak melarikan diri Maksudnya, kaedah perwakilan, pendakap, dll. semuanya perlu melarikan diri dan keluaran.

Untuk memastikan kebolehgunaan, disyorkan untuk menggunakan sintaks herdoc dengan escape. Memandangkan sintaks nowdoc diperkenalkan dalam PHP5.3, banyak persekitaran pengehosan awan mungkin tidak menyokongnya, menjadikannya mustahil untuk menggunakannya.

Akhir sekali, saya ingin menekankan bahawa herdoc telah diperkenalkan daripada php4.0, manakala sintaks nowdoc memerlukan versi 5.3. Kerana herdeoc mengandungi fungsi nowdoc, saya cadangkan menggunakan herdeoc adalah lebih baik.

Ringkasnya:

1 Heredoc adalah dinamik, manakala nowdoc adalah statik

2 Herdoc serupa dengan petikan berbilang baris dan NewDoc adalah serupa dengan berbilang-. petikan tunggal baris.

3. heredoc ialah penyelesaian umum untuk memproses rentetan besar, dan nowdoc ialah versi statik "cekap" yang dilaksanakan dalam PHP, yang menggantikan kecekapan pelaksanaan dinamik "Heredoc" .

Itu sahaja jika anda ingin mengetahui perkara lain, anda boleh klik ini. → →tutorial video php

Atas ialah kandungan terperinci Editor akan membantu anda mempelajari pembatas Adakah terdapat sebarang perbezaan antara nowdoc dan heredoc?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Artikel berkaitan

Lihat lagi