آشنایی با توابع include و require در php
برای ایمپورت کردن فایل های php درون فایل های php چهار تابع معروف وجود دارد:
- تابع require
- تابع include
- تابع require_once
- تابع include_once
همه ی این توابع جزو language construct هستند و می توانند با یا بدون پرانتز باشند.
تابع require در php
این تابع برای ایمپورت کردن یک فایل php خارجی درون فایل خودمان استفاده می شود.
//test.php file $name = 'Biawp.ir'; require 'rest.php'; //rest.php file echo 'I love '.$name; //output: I love Biawp.ir
وقتی از تابع require استفاده می کنیم، یعنی الزاما فایل ما باید الحاق شود. یعنی مشخص می کنیم که اطلاعات این فایل برای ادامه ی اسکریپت ضروری است.
اگر این فایل توسط php یافت نشد، یک خطای fatal یا مهلک (E_ERROR) ایجاد می شود و اسکریپت متوقف خواهد شد.
تابع include در php
این تابع دقیقا مشابه تابع require عمل می کند ولی با این تفاوت که الزامی در ایمپورت آن به موتور php اعلام نمی شود.
در واقع دستورات موجود در فایل الحاق شده برای ادامه ی اسکریپت ضروری نیست و اگر فایل الحاق شده یافت نشد، ادامه ی اسکریپت می تواند بدون خطا اجرا شود.
//test.php file $name = 'Biawp.ir'; include 'rest1.php'; echo 'I love '.$name; //output: I love Biawp.ir
موتور php در نقطه ای که فایل الحاق شده توسط تابع include را پیدا نکرد، یک خطای هشدار (E_WARNING) ایجاد می کند که البته همین خطا نیز توسط تنظیمات سرور قابل مخفی کردن است.
اگر یک متغیر به صورت global در فایل والد تعریف شود، در سطح global فایل الحاق شده قابل دسترس است:
//test.php file $name = 'Biawp.ir'; require 'rest.php'; //rest.php file echo 'I love '.$name; //output: I love Biawp.ir
همانطور که می بینید ما از متغیر name درون فایل rest.php استفاده کردیم.
اگر یک فایل را درون تابع الحاق کنیم، اطلاعات فایل الحاق شده، در سطح آن تابع محلی شده و فقط درون آن قابل استفاده است:
//test.php file $name = 'Biawp.ir'; function biawp() { global $name; require 'rest.php'; } biawp(); //rest.php file echo 'I love '.$name; //output: I love Biawp.ir
همانطور که می بینید، ما مجبوریم متغیر name را در سطح تابع خودمان global کنیم تا بتوانیم در فایل الحاق شده از آن استفاده کنیم.
تابع require_once در php
این تابع دقیقا مشابه تابع require عمل می کند با این تفاوت که اگر فایل الحاق شده، قبلا در اسکریپت الحاق شده بود، دیگر الحاق نمی شود. در واقع به php می گوییم که فایل مدنظر ما باید فقط یکبار در اسکریپت الحاق شود.
تابع require_once در صورتی که فایل الحاق شده را پیدا نکرد، خطای مهلک تولید می کند و اجرای اسکریپت متوقف می شود.
اگر از تابع require استفاده کنیم:
//test.php file $name = 'Biawp.ir'; require 'rest.php'; require 'rest.php'; //rest.php file echo 'I love '.$name; //output: I love Biawp.ir I love Biawp.ir
اگر از تابع require_once استفاده کنیم:
//test.php file $name = 'Biawp.ir'; require 'rest.php'; require_once 'rest.php'; //rest.php file echo 'I love '.$name; //output: I love Biawp.ir
مشاهده می کنیم که الحاق دوم انجام نمی شود چون با استفاده از تابع require_once به php گفتیم که اگر فایل rest.php قبلا الحاق شد، دیگر آن را الحاق نکن.
تابع include_once در php
این تابع دقیقا مشابه تابع include عمل می کند با این تفاوت که اگر فایل الحاق شده، قبلا در اسکریپت الحاق شده بود، دیگر الحاق نمی شود. در واقع به php می گوییم که فایل مدنظر ما باید فقط یکبار در اسکریپت الحاق شود.
تابع include_once در صورتی که فایل الحاق شده را پیدا نکرد، خطای هشدار تولید می کند ولی اجرای اسکریپت متوقف نخواهد شد.
اگر از تابع include استفاده کنیم:
//test.php file $name = 'Biawp.ir'; include 'rest.php'; include 'rest.php'; //rest.php file echo 'I love '.$name; //output: I love Biawp.ir I love Biawp.ir
اگر از تابع include_once استفاده کنیم:
//test.php file $name = 'Biawp.ir'; include 'rest.php'; include_once 'rest.php'; //rest.php file echo 'I love '.$name; //output: I love Biawp.ir
مشاهده می کنیم که الحاق دوم انجام نمی شود چون با استفاده از تابع include_once به php گفتیم که اگر فایل rest.php قبلا الحاق شد، دیگر آن را الحاق نکن.