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

PHP

توسط reza در 7 سال پیش
3 268.2k 6 1 روز پیش
reza saeed-n bagherinejad1394 digisys
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:

1

سلام ممنون بابت مطلب مفیدتون من قبلا دیده بودم که بعضی جاها از 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

1

بنده مدتی پیش از مقاله/مطالب سایت شما در تحقیق کلاسی ام برای دانشگاه استفاده کردم و در جزوه ام نوشتم ممکن است کمی تغییر هم داده باشم برای استاد و سایر دانشجویان...و منبع را فقط لینک اصلی سایت نوشتم در جزوه ام لینک فعال به مطلب نذاشتم... متاسفانه دقیق مشخص نکردم از کدام خط تا کجا مال سایت شماست و منبع را کلی نوشتم.irdevs.com
مطلبی در مورد تفاوت include / require include_once / required_ones
الان برای حلالیت پیام میدهم.میخواستم ببینم راضی هستید یا خیر اگر نیستید چیکار کنم که راضی باشید؟ خواهش می کنم جواب بدید. چون خیلی استرس دارم بابت این کار عذاب وجدان دارم لطفاً ایمیلم را به بخش مربوطه سایت و فرد صاحب امتیاز و رییس کل و نویسنده که اسمشان را ذکر نکردم برسانید و خواهش میکنم جوابم را بدهید که حلال می‌کنند یا نه؟ ازتان میخواهم که مرا ببخشید لطفا به ایمیلم پاسخ دهید bagherinejad1394@gmail.com
(مخصوصا از مطلب و تصویر استفاده کردم
و ممکن است تغییر هم داده باشم اندکی عکس را یا متن را
بقیه یادم نیست
اگر چیز دیگه هم
استفاده کردم... یا منبع را ذکر نکردم
لطفا لطفا حلالم کنیدممنون) در هر صورت جواب را به ایمیلم بفرستید: Bagherinejad1394@Gmail.com
صفحه ای که فکر می‌کنم استفاده کردم لینکش این است https://www.irdevs.com/discuss/530/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-include-%D8%A8%D8%A7-require-%D8%AF%D8%B1-php

0

@bagherinejad1394
از اینکه توانسته ایم کمک کوچکی به شما بکنیم خیلی خوشحال هستیم. مطالب سایت تحت مجوز CC BY-SA 3.0 منتشر میشوند و به این معنی است که شما میتوانید با ذکر منبع از مطالب استفاده کنید. موفق باشید.

0

سلام و خدا قوت متاسفانه من نمی‌دانستم و لینک فعال به مطلب ننوشتم فقط لینک اصلی سایت را به عنوان منبع نوشتم مشکلی دارد؟ و این که دقیق مشخص نکردم از کدام خط تا کدام خط را از صفحه شما نوشتم.... یک تحقیق دستی بود.... و الان شرمنده ام

آخرین ویرایش: 23-09-2020 ساعت 15:57، توسط bagherinejad1394
0

حاجی گفت که مشکلی نداره بیخیال نمیشی شما. یسری دیگه قشنگ دارن دزدی نرم افزار میکنن یسری هم مثل شما از اونو بوم افتادن. کارتون درسته اما گفت اشکالی نداره دیگه. موفق باشی.

خوش آمدید

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