دستورات include و require در PHP کدهای درون یک فایل را به کدهای فایل دیگری پیوست می کنند تا فایل دوم بتواند از کدهای فایل اول استفاده کند و از دوباره نویسی جلوگیری شود. به زبان ساده تر این دستورات تمام کدهای یک فایل را گرفته و در فایل مقصد کپی می کنند.
مزایای زیادی برای این کار وجود دارد؛ به طور مثال می توانیم با استفاده از این دستورات کار modulation را انجام دهیم. modulation یعنی کدهای برنامه ی خود را در چندین فایل مختلف و بر اساس نظمی خاص تقسیم بندی کنیم. به طور مثال قسمت پنل کاربران را در یک فایل بنویسیم و قسمت مدیران را در یک فایل دیگر، یا به طور مثال توابع کار با پایگاه داده را در یک فایل جمع کنیم و توابع مربوط به فرآیند ثبت نام را در فایلی دیگر قرار دهیم. مزایای استفاده از دستورات include
و require
زیاد است و در مواقع مختلفی کاربرد دارند.
نکته: این دو دستور قبل از اجرا شدن اسکریپت ها توسط سرور کار می کنند. اهمیت این مسئله در این است که کاربر نیازی به ارسال درخواست های مختلف ندارد بلکه با یک درخواست، سرور تمامی این فایل ها را (در صورتی که دستور include و require داشته باشند) به هم پیوست می کند و سپس آن ها را اجرا می کند.
یکی از استفاده های رایج دستورات include
و require
بدین صورت است که به جای نوشتن header و footer برای هر فایل به صورت جداگانه و بالا بردن حجم کدها، یک بار header و footer را مینویسیم و آن ها را در فایل های مختلف include می کنیم. این کار نه تنها باعث کاهش حجم کدها می شود بلکه مدیریت کدها را بسیار ساده تر می کند، چرا که اگر بخواهید قسمتی از header یا Footer سایت خود را ویرایش کنید (مثلا شماره تلفن خود را عوض کنید) می توانید آن ها را از یک جا و فقط یک بار (برای تمام صفحات) ویرایش کنید نه اینکه ده ها فایل را ویرایش کنید.
ساختار کلی استفاده از این دو دستور به شکل زیر است:
include 'filename'; or require 'filename';
فرض کنید یک footer ساده در فایلی به نام footer.php
داشته باشیم:
<?php echo "<p>Copyright © 1999-" . date("Y") . " W3Schools.com</p>"; ?>
این footer ساده برای نمایش علامت کپی رایت به همراه تاریخ است؛ اگر یادتان باشد جلسه ی قبل در مورد تاریخ و زمان صحبت کردیم و گفتیم که با استفاده از دستور ("date("Y
می توانیم سال را به صوت خودکار به روز رسانی کنیم.
حالا می توانیم با دستور include
آن را درون صفحه قرار دهیم:
<!DOCTYPE html> <html> <body> <h1>Welcome to my home page!</h1> <p>Some text.</p> <p>Some more text.</p> <?php include 'footer.php';?> </body> </html>
فرض کنید منوی خود را در فایل menu.php نوشته باشیم:
<?php echo '<a href="/default.asp">Home</a> - <a href="/html/default.asp">HTML Tutorial</a> - <a href="/css/default.asp">CSS Tutorial</a> - <a href="/js/default.asp">JavaScript Tutorial</a> - <a href="default.asp">PHP Tutorial</a>'; ?>
تمام صفحات سایت ما باید از این منو استفاده کنند بنابراین با کد زیر می توانیم این کار را انجام دهیم:
<!DOCTYPE html> <html> <body> <div class="menu"> <?php include 'menu.php';?> </div> <h1>Welcome to my home page!</h1> <p>Some text.</p> <p>Some more text.</p> </body> </html>
فرض کنید فایلی به نام vars.php و در آن دو متغیر زیر را داشته باشیم:
<?php $color='red'; $car='BMW'; ?>
حالا اگر فایل vars.php را در فایل دیگری include کنید می توانید از متغیرهای آن استفاده کنید:
<!DOCTYPE html> <html> <body> <h1>Welcome to my home page!</h1> <?php include 'vars.php'; echo "I have a $color $car."; ?> </body> </html>
سوال: تفاوت بین include و require چیست؟
پاسخ: اگر دستور include کردن فایلی را بدهیم اما به هر دلیلی عملیات موفقیت آمیز نباشد (آدرس فایل را اشتباه داده باشیم، فایل وجود نداشته باشد و الی آخر) یک warning (هشدار از نوع E_WARNING) می گیریم بنابراین اجرای برنامه متوقف نمی شود اما اگر از دستور require استفاده کرده باشیم به جای هشدار خطای fatal error (از نوع E_COMPILE_ERROR) دریافت می کنیم و اجرای برنامه کاملا متوقف خواهد شد.
بنابراین اگر فایل شما آنچنان اهمیتی ندارد و برنامه تان می تواند بدون وجود آن کار کند می توانید از دستور include
استفاده کنید اما اگر فایل مورد نظر برای اجرای برنامه حیاتی است (مثلا فایل فریم ورک شما است، فایل CMS یا کدهای و توابع خاص php شما است و ...) باید از دستور require
استفاده کنید. اگر این کار را نکنید ممکن است اطلاعات حساس یا فایل های حیاتی سیستم را در اختیار کاربران قرار دهید که به نوبه ی خود می تواند بسیار خطرناک باشد.
در مثال زیر آدرس فایل را اشتباه داده ایم. توجه کنید که هنوز هم اسکریپت ما اجرا می شود ولی به متغیر ها دسترسی نداریم:
<!DOCTYPE html> <html> <body> <h1>Welcome to my home page!</h1> <?php include 'noFileExists.php'; echo "I have a $color $car."; ?> </body> </html>
اما اگر از دستور require
استفاده کنیم:
<!DOCTYPE html> <html> <body> <h1>Welcome to my home page!</h1> <?php require 'noFileExists.php'; echo "I have a $color $car."; ?> </body> </html>
همانطور که می بینید تگ HTML نمایش داده می شود اما حتی یک خط از کدهای PHP ما نمایش داده نخواهند شد. این تفاوت را می توان از معنای این لغات نیز فهمید؛ require یعنی لازم داشتن (الزامی بودن) اما include یعنی شامل کردن!
نکته: علاوه بر دستورات include
و require
دستورات دیگری به نام های require_once
و include_once
نیز وجود دارند. تفاوت این ها این است که include
و require
هر بار سند مورد نظر را بارگذاری می کنند اما require_once
و include_once
تنها زمانی چیزی را require یا include می کنند که قبلا require یا include نشده باشد. واقعیت این است که تقریبا کسی از دستورات require_once
و include_once
استفاده نمی کند مگر در موارد خاص.
امیدواریم درس آموزش کاربرد include و require در php برای شما مفید بوده باشد. نظرات خود را با ما درمیان بگذارید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.