تحديث آخر نسخة 1.8.37

تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تضمين الملفات باستخدام include و require
#1
السلام عليكم ورحمة الله وبركاته

من أسهل الدوال التي نتعامل معها بكثرة في برمجياتنا، هي دوال تضمين الملفات، وتستخدم هذه الدوال عند الرغبة في تنفيذ الكود الموجود داخل ملف PHP من ملف آخر.

وكأمثلة على استخدامات هذه الدوال: (الأمثلة على سبيل المثال لا الحصر)
  • تضمين ملف عام - يحتوي على مجموعة من الاجراءات العامة اللازمة لكل ملفات السكريبت - في جميع صفحات السكريبت حتى يتم تنفيذه دائماً.
  • تضمين ملف يحتوي على بيانات قاعدة البيانات في جميع صفحات السكريبت حتى يسهل عملية الاتصال بقاعدة البيانات.
  • تضمين ملف يحتوي على الاعدادات العامة للسكريبت والتي يتم التحقق منها في اماكن كثيرة بالسكريبت.
  • تضمين ملف يحتوي على قائمة عامة يجب ان تتواجد بكل الصفحات، وعند الرغبة في تحديث هذه القائمة يتم تحديثها فقط في ملف واحد فتنعكس التحديثات على جميع صفحات السكريبت.
دوال التضمين: وهي
  1. include()
  2. include_once()
  3. require()
  4. require_once()
واليكم طريقة استخدام كل من هذه الدوال:
أولاً: الدالة include():
تقوم الدالة include بكل بساطة بنسخ الكود الموجود داخل الملف المراد تضمينه والذي يتم تمريره للدالة، ووضعه داخل الملف الأصلي وتنفيذه.
وتستخدم بالطريقة التالي:
PHP كود :
<?
include("filename.ext");
?>
حيث:
filename هو إسم الملف المراد تضمينه، ext هو امتداد الملف.
وتقبل الدالة include اي نوع ملف فلا يشترط ان يكون الملف من النوع php.

مثال1:
بفرض أننا أردنا انشاء ملف يحتوي على قائمة رئيسية يتم استخدامها بكل صفحات السكريبت، وليكن اسمه menu.php، ويحتوي على الكود التالي:
PHP كود :
<html>
<
body>
<
a href="index.php">الرئيسية</a> - 
<
a href="about.php">حول الموقع</a> - 
<
a href="links.php">روابط</a> - 
<
a href="contact.php">اتصل بنا</a> <br /> 
قم بحفظ الكود السابق باسم menu.php ثم قم بانشاء ملف جديد بالاسم index.php في نفس المجلد، وضع فيه الكود التالي:
PHP كود :
<?php include("menu.php"); ?>
<p>مرحباً في الصفحة الرئيسية</p>
</body>
</html> 
الآن ماذا سيرى زوار الصفحة index.php؟
سيروا القائمة الرئيسية وتحتها كلمة مرحباً..
وعند محاولة استعراض مصدر الصفحة يظهر الكود التالي:
PHP كود :
<html>
<
body>
<
a href="index.php">الرئيسية</a> - 
<
a href="about.php">حول الموقع</a> - 
<
a href="links.php">روابط</a> - 
<
a href="contact.php">اتصل بنا</a> <br />
<
p>مرحباً</p>
</
body>
</
html
مما يعني ان الكود داخل الملف menu.php يعامل وكأنه جزء من الملف index.php ولكن مع ميزة فصله عن باقي الملف للتنظيم فقط.


ثانياً: الدالة reauire():
الدالة require تعمل نفس عمل الدالة include المشروحة بأعلى، مع فرق واحد قد لا يعلمه الكثيرون، وهو عند استخدام الدالة include في تضمين ملف غير موجود او اسمه خاطيء يظهر فقط تحذير بأن الملف غير موجود ويستمر السكريبت في العمل بشكل طبيعي.
اما مع require فالوضع مختلف، فعند عدم وجود الملف المطلوب تظهر رسالة خطأ ويتوقف السكريبت عن العمل.
ولتوضيح الفرق بينهما لاحظ المثالين التاليين..

مثال2:
PHP كود :
<?php
include("WrongFileName.php");
echo 
"مرحباً";
?>
عند تنفيذ الكود السابق وبفرض عدم وجود الملف المطلوب، يكون الناتج كالتالي:
كود :
[B]Warning[/B]: main(WrongFileName.php): failed to open stream: No such file or directory in [B]/home/xxxx/index.php[/B] on line [B]2[/B] [COLOR=red]Warning[/COLOR]: main(): Failed opening 'WrongFileName.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in [B]/home/xxxx/index.php[/B] on line 2

مرحباً

مثال3:
PHP كود :
<?php
require("WrongFileName.php");
echo 
"مرحباً";
?>
اما عند تنفيذ الكود في المثال3 فيكون الناتج كالتالي:
كود :
[B]Warning[/B]: main(WrongFileName.php): failed to open stream: No such file or directory in [B]/home/xxxx/index.php[/B] on line [B]2[/B]
[COLOR=red]Fatal error[/COLOR]: main(): Failed opening required 'WrongFileName.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in [B]/home/xxxx/index.php[/B] on line 2
لاحظ انه لم يتم تنفيذ سطر الطباعة ولم تظهر الكلمة "مرحباً"..
مما يعني ان require تتطلب التأكد من وجود الملف وصحة اسمه حتى لا يتوقف السكريبت عن العمل، بعكس include التي يكمل السكريت العمل بعدها حتى لو لم يكن الملف موجوداً...

للأمانة منقول من منتدى بى اتش بى
الرد
شكر من طرف :


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 2 ) ضيف كريم