افزودن فایل های جانبی به برنامه توسط توابع include و require

PHP   
31 آگوست 2014   

در صفحات وب بسیار پیش می آید که نیاز است تا فایل دیگری که شامل کدهای دیگری است را به برنامه ی خود اضافه کنیم. مثلا ممکن است فایلی شامل کدهای زیادی است که نیاز است در صفحات مختاف از آن استفاده کنیم پس به جای این که آن کدها را در تک تک صفحات داشته باشیم تنها یک فایل با چنین محتوایی داشته باشیم و آن را در صفحات مختلف، به کدهای هر صفحه اضافه کنیم. با این کار حتی اگر نیاز به تغییری در کدها هم باشد تنها یک بار کدها را تغییر می دهیم و نیازی به تغییر آن در صفحات متعدد نیست. از این عمل می توان برای توابع، سرصفحه ها (header) و زیرصفحه (footer) ها یا کدهای مخصوص و یا عناصری که ممکن است در صفحات مختلف استفاده شود، استفاده کرد.

دو تابع برای انجام این کار وجود دارد:

تابع include()

تابع require()

این توابع جزء توابع داخلی php هستند که در ادامه به توضیح هریک می پردازیم.

تابع include()

یکی از کارهایی که وب نویسان معمولا در طراحی و کدنویسی صفحات وب انجام می دهند این است که کدهای سرصفحه و منو را به صفحات شان می افزایند، زیرا کدهای منو باید در تمام صفحات نمایش داده شوند.

در این جا ما کدهای مربوط به منو را در فایلی جداگانه به نام menu قرار داده و آن را به کدهای اصلی خود اضافه می کنیم. فایل حاوی کدهای منو به طور کامل به کدهای اصلی اضافه می شوند.

فایل menu.php حاوی کدهایی به صورت زیر هستند:

 

این کدها کدهای html هستند اما می توانند کدهای php نیز باشند. توجه کنید که این فایل می تواند تگ های <html> و <body> و… را نداشته باشد زیرا فایل اصلی ما دارای این تگ ها می باشد و نیازی به تکرار دوباره آن نیست. عبارت &nbsp برای ایجاد کمی فاصله بین لینک ها است.

برای افزودن این فایل به فایل اصلی از تابع include() استفاده می کنیم و کدهای صفحه ی اصلی ما به شکل زیر است:

 

می بینید که فایل menu.php را در محل دلخواه به فایل اصلی اضافه کردیم و سپس کدهای دیگر را می نویسیم. خروجی این صفحه به شکل زیر خواهد بود:

مثالی از استفاده تابع include

خروجی

تابع require()

این تابع همچون تابع include() عمل می کند اما در اداره کردن خطا ها تفاوت دارد.

در تابع include() اگر خطایی رخ دهد پس از نمایش یک هشدار (warning) به اجرای کدها ادامه می دهد اما تابع require() یک خطا (fatal error) ایجاد می کند که باعث توقف اجرای کدها می شود و به اجرای بقیه کدها ادامه نمی دهد.

مثال قبل را که برای تابع include() بررسی شد برای require() بررسی می کنیم.

فکر کنید فایل menu.php وجود نداشته باشد؛ پس با نوشتن کد include(“menu.php”) خروجی صفحه ی ما به صورت زیر خواهد بود:

استفاده از تابع include در صفحات php

می بینید که هشدار (warning)ی جهت نبود این فایل و هشداری دیگر به دلیل ناموفق بودن افزودن فایل به صفحه نمایش داده می شوند اما برنامه ادامه می یابد و پیغام “به سایت ما خوش آمدید” نمایش داده می شود.

حالا می خواهیم همین کار را با تابع require() آزمایش کنیم تا تفاوت آن را متوجه شویم. پس کد حاصل به شکل زیر تغییر می کند:

 

خروجی:

مثالی از استفاده تابع require در صفحات php

همانطور که می بینید به دلیل عدم وجود فایل menu.php یک هشدار(warning) به دلیل عدم توانایی در یافتن فایل مورد نظر و یک خطای مهلک (fatal error) به خاطر موفق نبودن تابع require() است که باعث می شود اجرای کدها متوقف شود و می بینید که پیغام “به سایت ما خوش آمدید” نمایش داده نشد.

Include_once() و require_once()

این دو تابع همانند دو تابع قبل عمل می کنند اما تنها تفاوتی که دارد این است که اگر یک فایل دو بار به فایل اصلی افزوده شود، دومین بار ناموفق بوده و تنها یک بار این عمل اتفاق می افتد در صورتی که اگر از یکی از دو تابع include() یا require() استفاده کنیم، هرچند بار که این تابع را صدا بزنیم فایل دوباره به فایل اصلی اضافه می شود.

در همان مثالی که پیش از این زده شد، این عمل را آزمایش می کنیم. کد صفحه ی اصلی ما به شکل زیر خواهد بود:

 

خروجی:

استفاده از تابع include_once و require_once

می بینید که به تعداد دفعاتی که تابع include() نوشته شده محتویات فایل menu.php به فایل اصلی افزوده شده.

حالا همین کد را با تابع include_once() آزمایش می کنیم. کد حاصل به شکل زیر خواهد بود:

 

خروجی:

مثالی از استفاده  تابع include_once و require_once

می بینید که با این که سه بار تابع include_once() استفاده شد، تنها یک بار فایل menu.php به فایل اصلی ما افزوده شد.

همین عمل برای require() و require_once() نیز به همین شکل عمل می کند.

 

پس دیدیم که به چه سادگی می توان فایل های جانبی مانند منوها یا هدر و فوتر و سایدبار ها رو به صفحه اصلی فایل برنامه اضافه کرد. استفاده از این تابع باعث می شه که از دوباره یا چندباره نویسی کدهامون جلوگیری بشه و اگر تصمیم داشتیم که تغییر کوچیکی توی یک قسمت (مثلا هدر) بدیم مجبور نباشیم که اونو توی همه ی صفحات سایتمون دوباره نویسی کنیم.