الملفات الضمنية include

الملفات الضمنية في السيرفر Server Side Includes (SSI)

يمكنك ادراج محتوى ملفات PHP الى ملفات PHP أخرى قبل قيام السيرفر بعرضها ويمكن استخدام include() أو require() .

تعتبر هذه الوظيفتين ثابتتين باستثناء كيفية التحكم بالأخطاء :

  • تقوم الوظيفة include() بتوليد التحذيرات ولكن سيتم استكمال عرض باقي الكود .
  • تقوم الوظيفة require() بتوليد خطأ فادح عندها سيتم إيقاف الكود ولن يتم عرضه .

يمكن باستخدام هاتين الخصيصتين إنشاء أكواد و ترويسات و تذيلات و أيضاً عناصر يمكن استخدامها في أكثر من مكان كالاعلانات وغيرها .

بهذه الطريقتين تحفظ الكثير من الوقت والجهد في إنشاء وتعديل الصفحات أي يمكنك إنشاء صفحة واحدة واستخدامها بأكثر من مكان وعندما سيتم تحديث أو تعديل الترويسة في الموقع يمكنك تعديل صفحة الترويسة header عندها سيتم تغيير الهيدر او الترويسة في جميع الصفحات أو عند إضافة صفحة جديدة يمكنك وبسهولة إضافتها في جميع صفحات الموقع عوضاُ عن إضافة الصفحة يدوياً .


PHP include() Function

يأخذ include() جميع محتوى الملف المخصص و يضمّنه في الملف الأصلي .

عند حدوث خطأ مع include() سيتم توليد تحذير ولكن باقي الكود سيتم عرضه وسيعمل بشكل جيد .

مثال 1

لنفترض أن لديك ملف ترويسة header بملف تم تسميته header.php ولتضمين هذا الملف داخل الصفحة الرئيسية يمكن استخدام include() كالتالي :

<html>
<body>
<?php include("header.php"); ?>
<h1>Welcome to my home page!</h1>
<p>Some text.</p>

</body>
</html>

مثال 2

لنفترض أن لديك قائمة رئيسية تسمى menu.php والتي سيتم استخدامها في جميع الصفحات كالتالي :

<a href="/default.php">الرئيسية</a>
<a href="/tutorials.php">الدروس</a>
<a href="/about.php">من نحن</a>
<a href="/contact.php">الاتصال بنا</a>
 

تلك القائمة يجب استخدامها في جميع الصفحات وإليكم طريقة استخدامها في جميع صفحات الموقع .

<html>
<body>
<div class="leftmenu">
<?php include("menu.php"); ?>
</div>
<h1>Welcome to my home page.</h1>
<p>Some text.</p>

</body>
</html>

اذا قمت بإظهار مصدر الصفحة لمشاهدة الأكواد من خلال المتصفح سيتم عرضها كالتالي :

<html>
<body>
<a href="/default.php">الرئيسية</a>
<a href="/tutorials.php">الدروس</a>
<a href="/about.php">من نحن</a>
<a href="/contact.php">الاتصال بنا</a>

</div>

<h1>Welcome to my home page!</h1>
<p>Some text.</p>

</body>
</html>


PHP require() Function

تعتبر require() مشابهة تماماً للوظيفة include() باستثناء طريقة التعامل مع الأخطاء .

عند حوث خطأ برمجي معين تقوم الوظيفة include() بتوليد التحذيرات ولكن سيتم استكمال عرض باقي الكود أما الوظيفة require() تقوم بتوليد خطأ فادح عندها سيتم إيقاف الكود ولن يتم عرضه .

مثال رسالة الخطأ باستخدام include()

<html>
<body>
<?php
include("wrongFile.php");
echo "Hello World!";
?>

</body>
</html>

رسالة الخطأ :

Warning: include(wrongFile.php) [function.include]:
failed to open stream:
No such file or directory in C:homewebsitetest.php on line 5
Warning: include() [function.include]:
Failed opening 'wrongFile.php' for inclusion
(include_path='.;C:php5pear')
in C:homewebsitetest.php on line 5
Hello World!

لاحظ بأن الجملة Hello World! تم عرضها وذلك لأن التحذير لم يقوم بإيقاف الكود بشكل كامل .

مثال رسالة الخطأ باستخدام require()

الآن لنقم بإنشاء الكود التالي الخاص بالوظيفة require() :

<html>
<body>
<?php
require("wrongFile.php");
echo "Hello World!";
?>

</body>
</html>

رسالة الخطأ :

Warning: require(wrongFile.php) [function.require]:
failed to open stream:
No such file or directory in C:homewebsitetest.php on line 5
Fatal error: require() [function.require]:
Failed opening required 'wrongFile.php'
(include_path='.;C:php5pear')
in C:homewebsitetest.php on line 5
 

لم تظهر الجملة الموجودة بعد الكود وذلك لأنها لاتقوم بعرض باقي الكود عند استكشاف خطأ معين .

من الأفضل استخدام require() مع الصفحات التي تحتوي على أكواد ولأنها بشكل طبيعي لن تعمل الأكواد في حال الخطأ أما include() يمكن استخدامها مع الصفحات التي لاتحتوي على الأكواد مثل HTML أو CSS .