انجمن عمومی گسترش فناوری آگو
Heredocs و Nowdocs در PHP - نسخه‌ی قابل چاپ

+- انجمن عمومی گسترش فناوری آگو (http://forums.ago.ir)
+-- انجمن: انجمن های عمومی گسترش فناوری آگو (/forumdisplay.php?fid=1)
+--- انجمن: برنامه نویسی (/forumdisplay.php?fid=13)
+--- موضوع: Heredocs و Nowdocs در PHP (/showthread.php?tid=2368)



Heredocs و Nowdocs در PHP - agotd - 02-17-2014 07:44 PM

Heredoc یکی از زاههای تعریف رشته های بزرگ در PHP است. این روش تعریف رشته در سیستم عامل های لینوکس و ویندوز و همچنین در زبانهای برنامه نویسی Perl , Python , Ruby نیز کاربرد دارد.در ادامه با این دو ابزار در PHP آشنا خواهید شد

heredoc به این صورت تعریف میشه که ابتدا سه علامت کوچکتر (>>>) سپس یک نام یا مشخصه برای رشته مورد نظرمون در نظر میگیریم.

بعد از نوشتن رشته در انتها نام یا مشخصه ای که در ابتدا مشخص کردیم رو در انتهای رشته قرار میدیم.

کد php:
<?php
$str 
= <<<DEMO
This is a
demo message
with heredoc.
DEMO;

echo 
$str;
?>

در مثال بالا ابتدا ۳ علامت کوچکتر سپس شناسه DEMO در ابتدا و انتهای رشته قرار گرفته.

نکته ای که در مورد heredoc باید در نظر داشته باشید اینه که heredoc مثل دابل کوتیشین (” “) عمل میکنه. یعنی محتویات داخل heredoc پردازش میشن.
مثلا زیر رو ببینید :

کد php:
<?php
$name 
"Max";
$str = <<<DEMO
Hello $name! <br/>
This is a
demo message
with heredoc.
DEMO;

echo 
$str

میبینید که به جای متغیر $name مقدار این متغیر در هنام چاپ نمایش داده میشه.

Nowdoc
این هم یکی دیگه از زوشهای تعریف رشته های بزرگ در php که تقریبا مثل heredoc تعریف و استفاده میشه.
تفاوت nowdoc با heredoc در اینه که nowdoc مثل تک کوتیشن عمل میکنه و مجتویات داخلش پردازش نمیشن.
برای تعریف nowdoc ابتدا سه علامت کوچکتر (>>>) سپس نام یا مشخصه که در nowdoc باید مشخصه بین تک کوتیشن قرار بگیره.
مثال :

کد php:
<?php
$str 
= <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD; 

میبینید که شناسه بین دو تک کوتیشن قرار گرفته.
در این نوع تعریف رشته در php متغیرهای داخل رشته پردازش نمیشن و خود متغیر به جای مقدارش نمایش داده میشه :

کد php:
<?php
    $name 
"Max";

$str = <<<'EOD'
Hello $name! <br/>
This is a
demo message
with heredoc
EOD;

    echo 
$str