include و require در PHP

در زبان PHP شما میتونید محتویات یک فایل PHP رو در دیگر فایلهای PHP اضافه کنید.

PHP قبل از این که اسکریپت رو اجرا کنه فایل مورد نظر رو اضافه میکنه. ناگفته نمونه که شما فایلهای دیگه مثل HTML رو هم میتونید با این دستور به فایل جاری اضافه کنید ولی معمولا برای اضافه کردن محتویات فایل های PHP مورد استفاده قرار میگیره.

محتویاتی که به فایل اضافه میشه میتونه کدهای HTML ، کدهای جاوا اسکریپت، متغیرها و هر محتوای دیگه ای باشه.

دو دستور include و require برای اضافه کردن فایل های PHP بکار برده میشن.

 

دستور include

مثالی از دستور include:

محتویات فایل a.php

<?php
echo "Hello World!<br/>";
$message= "Hello PHP!";
?>

محتویات فایل b.php

<?php
include 'a.php';
echo $message;
?>

وقتی که فایل b.php رو اجرا کنید این خروجی رو میبینید:

Hello World!
Hello PHP!

 

 دستور require

عملکرد دستور require هم دقیقا مشابه دستور include در اضافه کردن فایل هست اما این دو دستور یک تفاوت اساسی با هم دارن.

 

تفاوت دستور include با require

همونطور که گفتم در اضافه کردن فایل این دو دستور کار یکسانی انجام میدن اما اگر فایل مورد نظر وجو نداشته باشه این دستورات عکس العمل متفاوتی انجام میدن، در صورتی که فایل موجود نباشه یا مشکلی در درج فایل پیش بیاد:

  • دستور include  هشداری از نوع (E_WARNING) میده و ادامه کدها اجرا میشه.
  • دستور require  خطایی  از نوع (E_COMPILE_ERROR) میده و روند اجرای اسکریپت متوقف میشه.

 

اما دو دستور دیگه هم وجود دارن که اگه از وجودشون با خبر نباشید ضرر میکنید! این دو دستور include_once و require_once هستند.

تفاوت دستور include_once با require_once

در برنامه نویسی های پیشرفته شما گاهی اوقات چند فایل رو در هم ایمپورت می کنید. حالا تصور کنید شما تو فایل index.php، فایل x و y رو ایمپورت(اضافه) کرده اید. فایل x هم خودش فایل y رو تو خود ایمپورت کرده. در این صورت شما دو بار فایل y رو ایمپورت کردید  درسته؟ این کار اگر هم روال اجرای کدها رو دچار مشکل نکنه، باعث پردازش بیش از حد می شه.

فرق اینها از نظر اینکه include یا require هستنن هم دقیقاً همون فرق دو تابع include و require هست یعنی include_once باعث می شه که اگه فایل مورد نظر پیدا نشه، بقیه کدها اجرا میشن. اما require_once از اجرای بقیه کدها جلوگیری می کنه.

یه مثال ساده:

فایل a.php:

<?php
echo "Hello World!<br/>";
$message= "Hello PHP!";
?>

فایل b.php:

include			'a.php';
include		 	'a.php';
include_once	'a.php';
include_once	'a.php';
include			'a.php';
include_once	'a.php';
echo $message.'<br/>';
echo $message
?>

نتیجه اجرای فایل b.php به این صورت هست:

Hello World!
Hello World!
Hello World!
Hello PHP!
Hello PHP!

همونطور که دیدید کلمه Hello World! سه بار نمایش داده میشه این بخاطر اینه که وقتی دستور include_once میبینه که قبلا این داکیومنت include شده دیگه از اضافه کردن مجدد اون خودداری میکنه.

 

از کجا بفهمم چه فایلهایی اینکلود شدن؟

با استفاده از این کد ساده میتونید لیست تمام فایلهای include شده رو ببینید.

$included_files = get_included_files ();
foreach ( $included_files as $filename ) {
	echo "$filename <br/>";}

 

 

سوالی دارید؟

بدون گرفتن نتیجه اینجا رو ترک نکنید! هر سوالی دارید میتونید در عرض ۱۵ ثانیه ثبت نام و خیلی زود جواب بگیرید.

7 دیدگاه برای «include و require در PHP»

  1. نده می خواهم در یک صفحه از وردپرس (html) یک کد php را فراخوانی کنم تا تعداد لایک های یک سایت را به کاربر نمایش بدهد.
    کد (php) را از آدرس زیر پیدا کردم:
    http://99webtools.com/blog/php-script-to-get-social-share-count/
    که در انتهای این کد حالت دمو گذاشته شده است، به آدرس زیر:
    http://99webtools.com/social-popularity-checker.php
    که وقتی دکمه ثبت را می فشاریم، اطلاعات لایک ها نمایش داده می شود.
    حالا سوال این است که چطوری باید، دقیقا مانند سایت دموی کد، این کد را در صفحه وردپس خودم که html است فراخوانی کنم.
    البته در آدرس دمو، آدرس php فراخوانی می شود، ولی بنده هر کاری کردم، بعد از آپلود فایل در مسیر مشخص، فایل فراخوانی نمی شود و اصلا صفحه ای نمایش داده نمی شود.
    لطفا نمونه کد بگذارید و ساده جواب دهید زیرا بنده تخصصی در زیمنه ی کدنویسی ندارم.
    با تشکر از پاسخ شما

    1. سلام علی جان
      میخواین دقیقا همین فرم رو بذارین تو سایت؟ نتیجه باید کجا بیاد؟ صفحه خود سایت؟ سایت شما؟ Ajax باشه؟ نباشه؟
      اینارو باید مشخص کنید. لطفا سوالتون رو تو انجمن مطرح کنید اونجا راهنماییتون میکنن: http://www.softafzar.net

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

به سوال زیر پاسخ بدهید *