Heredocs و Nowdocs در PHP

خرداد ۱۸, ۱۳۹۱ توسط : سعید

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

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

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

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

    echo $str;
    ?>

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

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

    <?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
$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;

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

    <?php
    $name = "Max";

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

    echo $str;

?>

موفق باشید

بازدید : ۴۲۴۳

محمدرضا کاوسی
خرداد ۱۸, ۱۳۹۱ @ ۹:۳۷ ق.ظ

مرسی از آموزشات فقط بی زحمت اگه دو تا نکته رو هم بهش اضافه کنی بد نیست .
۱- قبل از نام شناسه ی انتهایی هیچ فاصله ای نباید وجود داشته باشه وگرنه خطا گرفته میشه .
۲- بعد از نام استفاده از این روش حتما حتما باید خطی وجود داشته باشه که اگر خط جدیدی وجود نداشته باشده باز هم خطا !!!

پاسخ دادن
    سعید
    خرداد ۱۸, ۱۳۹۱ @ ۳:۱۵ ب.ظ

    ممنون حتما اضافه میکنم .

    پاسخ دادن
خرداد ۱۸, ۱۳۹۱ @ ۱۱:۱۷ ق.ظ

عالی عالی عالی مثل همیشه. قبلاً با heredoc آشنا بودم ولی عنوانشو فراموش کرده بودم. خیلی جالب بود واسم. اینکه مثل دابل کوتیشن در جاسازی مقادیر عمل میکنه هیچوقت بهش فکر نکرده بودم. ولی الآن گرفتم ماجرا سر چیه. مرسی

پاسخ دادن
    سعید
    خرداد ۱۸, ۱۳۹۱ @ ۱:۴۰ ب.ظ

    خواهش میکنم علیرضا جان

    پاسخ دادن
خرداد ۱۸, ۱۳۹۱ @ ۱۱:۴۰ ق.ظ

سلام

مهمترین کاربرد doc ها در اینه که بدون [نیاز] تعریف متغیر استفاده بشه:

echo <<< MyString
Hello PHP!
MyString;
پاسخ دادن
    بهنام
    تیر ۲, ۱۳۹۱ @ ۹:۵۵ ق.ظ

    دابل کوتیشین هم همین خاصیت رو داره و ساده تر هم هست،
    به نظر من یکی از مهمترین کاربرد هاش میتونه در اسان کردن اختصاص یا چاپ کد های html تو در تو با javascript باشه که دیگه نخواد بیاییم و کوتیشن ها یا دابل کوتیشن ها رو اصلاح کنیم (منظورم اضافه کردن بک اسلاش قبل از اونها هست) و همونطوری که میبینیم مقداردهی می شوند.

    پاسخ دادن
خرداد ۱۸, ۱۳۹۱ @ ۱:۴۵ ب.ظ

دومیشو نمیدونستم .

پاسخ دادن
خرداد ۱۹, ۱۳۹۱ @ ۲:۵۹ ب.ظ

سلام سعید جان
چند روزی نبودم ..
خوبی ؟!
آقا توی کامنت بزار برام یا آی دی مو ادد کن حرف بزنیم واسه اون دوهفته نامه ..
مر۳۵۶ :دی

پاسخ دادن
خرداد ۲۱, ۱۳۹۱ @ ۳:۲۸ ق.ظ

خیلی ممنون. مطلب آموزنده ی بود…

پاسخ دادن

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


*