بنية لغة PHP

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

وسوم PHP

عندما تُفسِّر PHP ملفًا فهي تبحث عن وسوم البداية والنهاية، وهي ‎<?php و ‎?>‎، والتي تخبر PHP أين يجب أن تُفسِّر الشيفرات، وهذا يعني أنَّ بالإمكان تضمين لغة PHP في مختلف أنواع المستندات، وسيتجاهل المُفسِّر أي شيء خارج وسمَي البداية والنهاية.

تسمح PHP بوسم البداية المختصر وهو ‎<?‎ (لكن استعماله غير منصوح به، لأنها لا يعمل إلا إذا فعّلناه باستخدام تعليمة الضبط short_open_tag).

إذا كان الملف لا يحتوي إلا على شيفرات PHP، فمن المستحسن حذف وسم النهاية في آخر الملف، وهذا يمنع طباعة الفراغات أو الأسطر الموجودة بعد وسم النهاية، والتي قد تُسبِّب مشاكل إذا لم تكن مقصودةً، فقد تؤدي إلى إظهار مخرجات في حين أنَّ المبرمج لا يريد ذلك:

<?php
echo "Hello world";

// ...

echo "Last statement";

// ينتهي السكربت دون وجود وسم إغلاق

سجل التغييرات

الإصدار الوصف
7.0.0 حُذِفَت الوسوم الشبيهة بلغة ASP وهي <% و %> و ‎<%=‎، ووسم <script language="php"‎>.
5.4.0 الوسم ‎<?=‎ أصبح متوافرًا دومًا

استخدام PHP مع HTML

سيتم تجاهل كل شيء خارج وسمَي البداية والنهاية من مفسِّر PHP، مما يسمح بوجود محتوى مختلط في ملفات PHP؛ وهذا يسمح بتضمينها في مستندات HTML:

<p>This is going to be ignored by PHP and displayed by the browser.</p>
<?php echo 'While this is going to be parsed.'; ?>
<p>This will also be ignored by PHP and displayed by the browser.</p>

ستعمل الشيفرة السابقة كما ينبغي، ذلك لأنَّ مُفسِّر PHP عندما يكون خارج وسمَي البداية والنهاية سيقوم بإخراج جميع المحتويات الموجودة (باستثناء السطر الجديد الذي يلي شيفرة PHP، انظر إلى صفحة فصل التعليمات البرمجية للتفاصيل).

لاحظ أنَّ الأمر يختلف في حال وجود عبارة شرطية مثل if التي ستؤدي إلى تغيير مسار البرنامج (وبالتالي مسار المخرجات) في الملف، كما في المثال الآتي.

المثال 1: استخدام التعابير الشرطية

<?php if ($expression == true): ?>
  This will show if the expression is true.
<?php else: ?>
  Otherwise this will show.
<?php endif; ?>

ستتجاوز لغة PHP الكتل التي لا يتحقق الشرط فيها، حتى لو كانت خارج وسوم PHP.

لاحظ أنَّ من الأفضل عند طباعة كميّة كبيرة من النصوص هي وضعها خارج وسوم PHP، وذلك بدلًا من طباعتها باستخدام الدالة echo أو print.

فصل التعليمات البرمجية

كما في لغة C أو Perl، تتطلب لغة PHP أن تنتهي التعابير البرمجة بفاصلة منقوطة " ; ". لاحظ أنَّ وسم النهاية سيشير إلى وجود فاصلة منقوطة ضمنيًا، أي لا حاجة إلى وضعها في آخر سطر من شيفرة PHP؛ لاحظ أنَّ وسم النهاية سيتضمن السطر الجديد الذي يليه مباشرةً:

<?php
    echo 'This is a test';
?>

<?php echo 'This is a test' ?>

<?php echo 'We omitted the last closing tag';

ملاحظة: وسم النهاية الموجود في آخر الملف هو اختياريٌ، وفي بعض الحالات سيكون من المفيد حذفه عند استخدام include أو require، ذلك لأنَّ الفراغات البيضاء غير المرغوب بها لن تظهر في نهاية الملفات، وستكون قادرًا على إرسال ترويسات HTTP في وقتٍ لاحق.

التعليقات

تدعم لغة PHP التعليقات الشبيهة بتعليقات C و ‎C++‎ و Perl. على سبيل المثال:

<?php
    echo 'This is a test'; // This is a one-line c++ style comment
    /* This is a multi line comment
       yet another line of comment */
    echo 'This is yet another test';
    echo 'One Final Test'; # This is a one-line shell-style comment
?>

التعليق السطر يمتد إلى نهاية السطر الحالي أو نهاية شيفرة PHP أيهما أولًا، وهذا يعني أنَّ شيفرات HTML الموجودة بعد ‎// ... ?>‎ أو ‎# ... ?>‎ ستُطبَع؛ أي أنَّ وسم النهاية <? سيوقف تفسير شيفرة PHP ولن تستطيع التعليقات إيقاف ذلك.

<h1>This is an <?php # echo 'simple';?> example</h1>
<p>The header above will say 'This is an  example'.</p>

نمط تعليقات C سينتهي عند أوّل مصادفة للتعبير /*، وهذا يعني أنَّ من غير الممكن تشعّب هذا النوع من التعليقات، ومن السهل الوقوع في هذا الخطأ إذا كنت تحاول تعطيل جزء كبير من الشيفرات عن طريق وضعها في تعليق:

<?php
 /*
    echo 'This is a test'; /* This comment will cause a problem */
 */
?>

مصادر