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

PHP

توسط reza-irdev در 5 سال پیش
0 1.4k 1 5 سال پیش
reza-irdevsaeed-n
0

تفاوت دستور Include با Require در PHP:

سلام دو دستور include و require در زبان پی اچ پی برای اضافه کردن یک فایل دیگر در فایل جاری بکار میرن و بسیار کاربردی هستن اما یک تفاوت مهم دارن!

-اگر از دستور include استفاده کنید در صورتی که فایلی که include کردید وجود نداشته باشه PHP یک Warning میده و به کارش ادامه میده یعنی بقیه لاین ها رو هم میخونه چه خطا وجود داشته باشه و چه نداشته باشه!

-اگر از دستور require استفاده کنید در صورتی که فایلی که require کردید وجود نداشته باشه PHP یک Fatal error میده و دیگه به کارش ادامه نمیده تا مشکل حل بشه.

همونطور که از اسمهاشون هم معلومه ، include به معنی "شامل بودن" هست ولی require به معنی "نیاز داشتن".

حالا به مثال توجه کنید: ما یه سند پی اچ پی با نام link.php داریم:

<html>
<body>
<a href="http://softafzar.net" target="_blank">Visit our website</a> 
</body>
</html>

و یک فایل index.php داریم که میخوام فایل link.php رو با دستور includeبهش اضافه کنیم:

<html>
<body>
<?php include("link.php"); ?>
<p>Difference between “include” and “require” in php</p>
</body>
</html>

نتیجه در صورت موجود بودن فایل در هر دو دستور یکی هست:

Visit our website

Difference between “include” and “require” in php

اما در صورتی فایل ما وجود نداشته باشه نتیجه استفاده از دستور include:

Warning: include(li2nk.php) [function.include]: failed to open stream: No such file or directory in C:\local\htdocs\a\index.php on line 3

Warning: include() [function.include]: Failed opening 'li2nk.php' for inclusion (include_path='.;C:\local\php\PEAR') in C:\local\htdocs\a\index.php on line 3

Difference between “include” and “require” in php

هست توجه کنید که به کارش ادامه داده یعنی با وجود خطا جمله "Difference between “include” and “require” in php" هم چاپ شده.

اما اگر از دستور require استفاده کنیم نتیجه این میشه:

Warning: require(li2nk.php) [function.require]: failed to open stream: No such file or directory in C:\local\htdocs\a\index.php on line 3

Fatal error: require() [function.require]: Failed opening required 'li2nk.php' (include_path='.;C:\local\php\PEAR') in C:\local\htdocs\a\index.php on line 3

در اینجا جمله چاپ نشده پس به کارش خودش ادامه نداده.

موفق باشید :winksmiley02:

0

سلام ممنون بابت مطلب مفیدتون من قبلا دیده بودم که بعضی جاها از include_once()‎ و require_once()‎ هم استفاده میکنن گشتم و فرقشون رو پیدا کردم گفتم اینجا هم بذارم شاید این سوال برای کسی پیش بیاد :wubsmiley:

فرق تابع include_once()‎ با require_once()‎:

  • کلمه once یعنی «یک بار».

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

پس، بهتر است از توابع include_once یا require_once استفاده کنید.

این توابع کمک می کنند که اگر قبلاً یک فایل را ایمپورت کرده اید و به هر دلیلی دوباره آن فایل ایمپورت می شود، بار دو (و سوم و ...) دیگر ایمپورت صورت نمی گیرد، اما طبیعتاً اگر قبلاً ایمپورت نشده بود، ایمپورت صورت می گیرید.

همین!

فرق آن ها از نظر اینکه include یا require هستند نیز دقیقاً همان فرق دو تابع include و require است. یعنی include_once باعث می شود که اگر فایل مورد نظر پیدا نشد، بقیه کدها اجرا شوند. اما require_once از اجرای بقیه کدها جلوگیری می کند.(توضیحی که m0n0 w4ll در پست بالا دادن ^_^ )

aftab.cc

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.

لطفا ابتدا لاگین کنید