כל מתכנת PHP מכיר את עניין המרכאות היחידות להכלת מחרוזת טקסט ב-PHP ועניין המרכאות הכפולות לתיאור הכלת מחרוזת טקסט עם משתנים ב-PHP.
<?php
$str = 'hello world';
$hello = 'hello';
$anotherString = "$hello world";
מעטים מכירים את heredoc ואת nowdoc שהתווסף ב-PHP 5.3. במאמר זה אסביר ואף אדגים את השימוש ב-heredoc ו-nowdoc.
heredoc זהה כמעט לחלוטין למרכאות כפולות, אך הוא הרבה יותר נוח כאשר מדובר בכמות רצינית של טקסט שבו יש מרכאות כפולות וגם מרכאות בודדות. מה שיפה בו הוא שגם אפשר להכניס משתנים. כלומר הוא מאד נוח להכנסת כל טקסט שהוא כולל משתנים וכולל מערכים ללא צורך להשתמש בסוגריים מסולסלות.
הנה דוגמא פשוטה:
<?php
$name = 'Moshe';
$str = <<<ETC
Hello, $name, whats up?
ETC;
print $str;
איך מפעילים את ה-heredoc? בוחרים שם כלשהו (לצורך העניין ETC) ומשתמשים בשלושה חצים בדיוק כמו בדוגמה לעיל. על מנת לסגור את ה-heredoc יש להוסיף את השם בלבד ונקודה םפסיק וזהו (אסור שיהיה תו נוסף בשורה הזו).
החל מגרסת PHP 5.3 ניתן להשתמש ב-heredoc בכל מקום כולל ב-classים.
נשאלת השאלה למה זה שימושי – התשובה היא ברורה מאליה, מי שמשתמש בזה לא צריך לדאוג בנוגע למרכאות ולא צריך לשים סוגריים מסולסלות סביב משתנים יותר מורכבים כגון איבר מסוים במערך.
nowdoc
nowdoc זהה ל-heredoc רק שהוא לא ממיר את המשתנים שנמצאים בו לערכים – בדיוק כמו מרכאות יחידות. כך למשל אם נשתמש ב-nowdoc כאן:
<?php
$name = 'Moshe';
$str = <<<'ETC'
Hello, $name, whats up?
ETC;
print $str;
הפלט שנראה הוא:
Hello, $name, whats up?
אופן יצירת nowdoc זהה ל-heredoc, רק שכאשר אנו בוחרים את השם אנו משתמשים במרכאות. nowdoc הוא תוספת חדשה החל מ-PHP 5.3.