WebPajooh
WebPajooh
خواندن ۱ دقیقه·۴ سال پیش

دمی با require و include

دمی با require و include
دمی با require و include

هفته‌ی پیش در مصاحبه‌ای کاری (برای سمت توسعه‌دهنده‌ی بک‌اند) شرکت کردم که یکی از پرسش‌های مصاحبه‌کننده درباره‌ی require و include بود. با اینکه جوابی ناقص در خصوص متوقف‌شدن یا نشدن برنامه در تفاوت این دو گفتم، اما تصمیم گرفتم که مطلبی راجع به این موضوع بنویسم تا هم این معلومات برای خودم تثبیت شوند و هم دیگران استفاده کنند.

کاربرد

از هردوی آنها برای فراخوانی کدهای فایلی دیگر در جریان اسکریپت فعلی استفاده می‌کنیم. فرض کنید که تنظیمات و اطلاعات مربوط به دیتابیس، سرویس‌های خارجی و غیره خود را در فایل config.php نوشته‌ایم، و توابع مورد نیاز را در فایل functions.php قرار داده‌ایم و می‌خواهیم در فایل اصلی index.php از آنها استفاده کنیم. باید هردو فایل را در index.php فراخوانی کنیم تا بتوانیم از آنچه نوشته‌ایم، در index.php استفاده کنیم.

تفاوت رفتار require و include

در صورتی که PHP نتواند فایل فراخونی شده را بیابد، در صورت استفاده از include یک E_WARNING و در صورت استفاده از require یک E_ERROR را برمی‌گرداند. پس در صورت استفاده از include با بروز یک مشکل، اسکریپت متوقف نشده و همچنان ادامه خواهد داد، اما در require چنین نیست و اسکریپت با یک Fatal Error متوقف خواهد شد.

تفاوت E_ERROR و E_WARNING

کلمه‌ی E_ERROR به خطاهای مهلک زمان‌اجرا (Fatal run-time errors) اشاره دارد که باعث متوقف‌شدن روند برنامه می‌شوند و E_WARNING به هشدارهای غیر مهلک زمان‌اجرا اشاره دارد که بروزشان باعث توقف برنامه نمی‌شود. موارد دیگری مانند E_PARSE (خطاهای زمان کامپایل) و E_NOTICE (اعلان‌های زمان اجرا) وجود دارند که همگی را در این بخش از مستندات پی‌اچ‌پی خواهید یافت.

تفاوت require و require_once

بین require و require_once (همچنین include و include_once) یک تفاوت جالب وجود دارد. به کد زیر توجه کنید:

core.php

<?php echo &quotThinking...\n&quot

script.php

<?php require 'core.php'; // bla bla bla require_once 'core.php';

اگر فایل script.php را اجرا کنیم، تنها یک بار عبارت Thinking را مشاهده می‌کنیم، زیرا در دفعه‌ی دوم از require_once استفاده کرده‌ایم. با require_once، بررسی می‌شود که آیا این فایل پیش از این فراخوانی شده است یا نه، و در صورتی که پاسخ مثبت باشد، دیگر فراخوانی نخواهد شد. اگر بجای آن از require استفاده می‌شد، عبارت Thinking دو بار چاپ می‌شد، زیرا فراخوانی دو بار اتفاق می‌افتاد.


تفاوت require و include در php
تفاوت require و include در php

امیدوارم که برایتان مفید بوده باشد و پیشنهادات و انتقادات خود را دریغ نفرمایید.

آموزش phprequire vs includeفرق require و includeنکات phpphp حرفه ای
توسعه‌دهندۀ بک‌اند، امیدوار، خیال‌باف، علاقه‌مند به خواندن و نوشتن
شاید از این پست‌ها خوشتان بیاید