تفاوت دستور 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: