سلام
ورود شما رو به برنامه نویس خیر مقدم عرض می کنم :)
-----
فکر میکنم اگر جستجو میکردی پیدا می کردی
در هر صورت.
در include اگر به هر دلیلی، عمل فراخوانی با خطا مواجه شد و در نهایت صفحه ی مورد نظر فراخوانی نشد، تنها یک ارور نمایش داده میشه و سپس ادامه ی برنامه اجرا میشه.
اما در require در صورتی که عمل فراخوانی با خطا مواجه شد، بعد از نمایش ارور، دیگه ادامه ی برنامه اجرا نمیشه.
این برای جاهایی هست که فراخوانی شدن فایل مربوطه، واجب هست! مثلا فراخوانی صفحه ای که قراره login بودن کاربر رو چک کنه. خوب اگر از include استفاده کنی، در صورتی که این صفحه به هر دلیلی فراخوانی نشه، برنامه ادامه ی کار رو میده و صفحه ای که نباید نمایش داده بشه، نمایش داده میشه. و وقتی که از require استفاده کنی، بعد از ارور برنامه ادامه پیدا نمیکنه و صفحه ی مذکور نمایش داده نمیشه.
اما زمانی که _once به انتهای هر کدوم از این دو تابع اضافه بشه، یعنی در صورتی که قبلا فایل ورودی تابع، فراخوانی شده باشه، دیگه فراخوانی نشه:
Page A:
------------
include("B");
include_once("C");
------------
Page B:
------------
include_once("C");
------------
در این کد، وقتی که صفحه ی A فراخوانی میشه، کدهای صفحه ی B داخل صفحه ی A اجرا میشه، یعنی در حقیقت انگار که محتویات صفحه ی A اینجوری باشه:
Page A:
------------
include_once("C"); //Page B Codes
include_once("C");
------------
یعنی در حقیقت صفحه ی C دوبار در صفحه ی A فراخوانی میشه. اما از اونجایی که از تابع include_once به جای include استفاده شده، این تابع فقط دفعه ی اول صفحه ی C رو فراخوانی میکنه و در دفعات بعد دیگه این کار انجام نمیشه...
موفق باشید.