تطبع echo النصوص. اكتب echo "Hello"; لإخراج نص، وecho "Hello, $name"; لتضمين متغير، وecho $a, $b; لطباعة عدة قيم متتالية. كل ما تطبعه echo يصبح الصفحة التي يعرضها المتصفح، أو النص الذي تراه في الطرفية.
يستخدم السطر الأول الاستيفاء (المتغير داخل علامتي التنصيص المزدوجتين)، ويربط السطر الثاني النصوص بالعامل .، ويمرر السطر الثالث ثلاث قيم مفصولة بفواصل. الثلاثة تطبع النوع نفسه من النتائج.
طباعة HTML باستخدام echo
في صفحة الويب، تطبع echo عادةً HTML. يستقبل المتصفح النص ويعرض الوسوم. اضغط Run فيعرض تبويب Page النتيجة المعروضة:
يستخدم السطر الأخير علامات التنصيص المفردة حتى لا تحتاج علامات التنصيص المزدوجة في class="note" إلى تهريب. لا تُستبدل المتغيرات داخل علامات التنصيص المفردة، فاستخدمها للنص الثابت. وإذا جاءت القيمة من زائر (نموذج أو رابط)، فاطبعها عبر htmlspecialchars حتى لا تحقن HTML، وراجع صفحة htmlspecialchars.
وسم echo المختصر <?=
داخل ملف HTML، يكون <?= $value ?> الصيغة المختصرة لـ <?php echo $value; ?>. ويبقي القوالب سهلة القراءة:
وسم echo المختصر متاح دائمًا. أما الوسم المختصر الآخر، <? دون php، فيعتمد على إعداد ولا ينبغي استخدامه.
طباعة عدة قيم وأسطر جديدة
لا تضيف echo فاصل سطر. في الطرفية، أضف "\n" (بين علامتي تنصيص مزدوجتين) أو الثابت PHP_EOL. وفي HTML، لا يظهر فاصل السطر في الكود المصدري، فاستخدم <br> أو عناصر منفصلة.
الفواصل والنقاط تعطي المخرجات نفسها. مع الفواصل، تطبع echo كل قيمة بدورها، ومع النقاط تبني PHP أولًا نصًا واحدًا ثم تطبعه. ولفواصل الأسطر صفحة خاصة: السطر الجديد في PHP.
الفرق بين echo وprint
print هي الأخت الأقدم. تطبع قيمة واحدة وتعيد دائمًا 1، وهذا يسمح بظهورها داخل تعبير. أما echo فتأخذ أي عدد من القيم ولا تعيد شيئًا.
echo | print | |
|---|---|---|
| القيم | واحدة أو أكثر، مفصولة بفواصل | واحدة بالضبط |
| ما تعيده | لا شيء (هي تعليمة) | 1 |
| الاستخدام داخل تعبير | لا | نعم، $ok = print "x"; |
| الاستخدام الشائع | كل شيء تقريبًا | نادرًا |
أما printf فمختلفة: تنسّق القيم باستخدام عناصر نائبة، مثل printf("%05.2f", 3.14159)، وتشرحها صفحة sprintf.
طباعة مصفوفة أو كائن
لا تطبع echo إلا النصوص والقيم التي تتحول إلى نصوص (الأعداد والقيم المنطقية وnull). المصفوفة لا تتحول. تطبع PHP على جهازك تحذيرًا والكلمة Array:
PHP Warning: Array to string conversion in /home/index.php on line 3
Array
لعرض المحتوى، اختر الدالة المناسبة:
الكائن أكثر صرامة: ما لم يعرّف صنفه __toString()، يوقف echo $object; السكربت بالخطأ Error: Object of class User could not be converted to string. والقيم المنطقية مفاجأة شائعة أيضًا: يطبع echo true; الرقم 1 ولا يطبع echo false; أي شيء. استخدم var_dump($value) عندما تحتاج إلى رؤية النوع والقيمة بدقة.
خطأ شائع: echo مع الأقواس والفواصل
لأن echo تبدو كدالة، يكتب بعضهم echo("a", "b");. هذا خطأ تحليل، لأن الأقواس تحيط بتعبير واحد:
PHP Parse error: syntax error, unexpected token "," in /home/index.php on line 2
احذف الأقواس (echo "a", "b";) أو اربط القيم (echo("a" . "b");). وينطبق الأمر نفسه على print، التي لا تقبل قيمة ثانية أبدًا، بأقواس أو بدونها.
الأسئلة الشائعة
ما الفرق بين echo وprint في PHP؟
كلاهما يطبع نصوصًا. تقبل echo عدة قيم مفصولة بفواصل (echo $a, $b;) ولا تعيد شيئًا، أما print فتأخذ قيمة واحدة بالضبط وتعيد 1، لذا يمكن استخدامها داخل تعبير. عمليًا تُستخدم echo في كل مكان تقريبًا.
هل أحتاج إلى أقواس مع echo؟
لا. echo بنية لغوية وليست دالة، لذا فإن echo "Hi"; هي الصيغة المعتادة. تعمل echo("Hi"); لأن الأقواس تجمع تعبيرًا واحدًا فقط، لكن echo("a", "b"); خطأ تحليل.
لماذا لا تطبع echo false شيئًا؟
تحوّل echo قيمتها إلى نص، فتصبح false النص الفارغ "" بينما تصبح true النص "1". لرؤية القيمة المنطقية نفسها، استخدم var_dump($x); (يطبع bool(false)) أو echo var_export($x, true); (يطبع false).
ماذا يعني <?= في PHP؟
<?= $value ?> هو وسم echo المختصر، وهو مطابق لـ <?php echo $value; ?>. وهو مفعّل دائمًا منذ PHP 5.4، وهو الطريقة المعتادة لطباعة القيم داخل قوالب HTML.