تفاوت دستور include با require در PHP
#1
Note 
تفاوت دستور Include با Require در PHP:

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

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

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

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

حالا به مثال توجه کنید:
ما یه سند پی اچ پی با نام link.php داریم:
[HTML]<html>
<body>
<a href="http://softafzar.net" target="_blank">Visit our website</a>
</body>
</html>

[/HTML]

و یک فایل index.php داریم که میخوام فایل link.php رو با دستور include بهش اضافه کنیم:
کد:
<html>
<body>
<?php include("link.php"); ?>
<p>Difference between “include” and “require” in php</p>
</body>
</html>

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

Difference between “include” 
and “require” in php 

اما در صورتی فایل ما وجود نداشته باشه نتیجه استفاده از دستور include:
[HTML]
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
[/HTML]
هست توجه کنید که به کارش ادامه داده یعنی با وجود خطا جمله "Difference between “include” and “require” in php" هم چاپ شده.

اما اگر از دستور require استفاده کنیم نتیجه این میشه:
[HTML]
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
[/HTML]
در اینجا جمله چاپ نشده پس به کارش خودش ادامه نداده.

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

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

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note چطور با انتخابای متفاوت از فرم کوئری مناسب داشته باشم؟ mahbobe.prog 7 1,240 26-11-2014 ساعت 11:04
آخرین ارسال: mahbobe.prog
Note متفاوت بودن خروجی متد خراخوانی شده با متد اصلی mahbobe.prog 13 1,142 11-09-2014 ساعت 18:21
آخرین ارسال: mahbobe.prog
Note دستورات پایگاه داده maynoush 2 431 19-07-2014 ساعت 09:17
آخرین ارسال: THE KNIGHT
Note تفاوت file.inc.php با file.php REza mAX 6 769 16-01-2014 ساعت 13:53
آخرین ارسال: REza mAX
Note مشکل در اجرای دستورات سیمفونی در ویندوز IranPhp 4 522 21-11-2013 ساعت 14:59
آخرین ارسال: IranPhp
Note تفاوت بین دو زمان در php TroFun 2 549 29-10-2013 ساعت 11:39
آخرین ارسال: Daniel
Note Include کردن اتوماتیک همه فایل ها در یک مسیر PHP.sec 1 574 08-10-2013 ساعت 11:47
آخرین ارسال: @EchO
Note تفاوت this$ با ::self در PHP چیست؟ Php1 1 728 29-09-2013 ساعت 16:01
آخرین ارسال: PHP.sec
Note فایلهایی که در سند جاری include شده اند؟ SIAVASH 1 449 17-07-2013 ساعت 12:41
آخرین ارسال: REza mAX
Note تفاوت "==" با "===" در PHP SOFTAFZAR 0 398 24-02-2013 ساعت 20:54
آخرین ارسال: SOFTAFZAR

کاربرانِ درحال بازدید از این موضوع:   1 مهمان