پی اچ پی زبانی شی گرا (Object Oriented) است ولی می توانیم برنامه را تمام با تابع ها بنوسیم. در برنامه دسته ای از کدها وجود دارند که با یکدیگر یک منطق برنامه را تعریف می کنند. به جای اینکه بخواهیم این کدها را به صورت تکراری درون بخش های متفاوت برنامه نویسیم، می توانیم آنها را در غالب یک تابع دسته بندی کرده و سپس بوسیله نام تابع و فراخوانی تابع، این دسته از کدها را اجرا کنیم. به عبارت دیگر می توانیم بخش های متفاوت برنامه را به تابع هایی دسته بندی کنیم.

تعریف تابع ها باعث می شود تا بتوانیم بخش های متفاوت برنامه را دسته بندی کرده که این خودش باعث خوانایی بهتر برنامه می شود. همچنین می توانیم یک بخش را بدون درگیری با بخش دیگر و بدون سردرگمی، بروز کرده، تغییر دهیم و یا بهبود ببخشیم. کد زیر الگوی ایجاد یک تابع را نشان می دهد. همانطور که می بینید تعریف تابع، با واژه کلیدی function شروع شده و پس از آن نام تابع می آید. میان براکت های باز و بسته، بدنه و کدهای تابع قرار می گیرند. همچنین یک تابع می تواند ورودی (آرگومان – پارامتری) نداشته باشد و یا اینکه می تواند یک تا چندین ورودی داشته باشد. در پایان تابع ها می توانند بوسیله عبارت return مقداری را برگشت دهند و یا اینکه هیچ مقداری را برگشت نداده و تنها یک خروجی را چاپ یا بر روی برخی از متغیرها و آرایه و یا بخشی از برنامه تنها تغییرهایی را انجام دهند.

آرگومان ها ورودی تابع ها

آرگومان ها ورودی های تابع هستند که تنها درون خود بدنه تابع قابل دسترسی هستند. در کد شکل زیر دو تابع به نام ()printHello و ()printValue تعریف شده است که هیچ کدام بوسیله عبارت return مقداری را برگشت نمی دهند. تابع ()printValue دو مقدار را به عنوان ورودی دریافت و سپس آنها را درون بدنه تابع و بوسیله تابع echo نمایش می دهد. توجه کنید چون آشکارا گونه (نوع) این دو آرگومان را مشخص نکردیم، پس می توانند از هر گونه ای مانند عدد، رشته یا آرایه را دریافت کنند. سپس در خط های ۱۵ و ۱۷ تابع ها فراخوانی شده اند.

زمانی که بخواهید به طور آشکار گونه یک آرگومان را مشخص کنید، باید همانند کد شکل زیر، بوسیله واژه های کلیدی int یا float یا string یا boolean یا array، گونه آرگومان را مشخص کنید. بنابراین در فراخوانی خط ۱۷ شکل زیر چون آرگومان یکم باید از گونه string و آرگومان دوم از گونه int باشد، پس همانند شکل خطا نشان داده خواهد شد.

در کد شکل زیر نمونه دیگری نشان داده شده است که در آن دو تابع تعریف شده اند که یکی ورودی رشته و دیگری ورودی عدد صحیح را دریافت می کند. در فراخوانی تابع ()sayHello در خط ۱۰ عدد ۱۰۰ به عنوان ورودی فرستاده شده، با اینکه می بایست رشته فرستاده می شود. در این مورد، پی اچ پی عدد را به رشته تبدیل می کند، به این معنا که رشته ای از عددها ایجاد می شود. در خط ۱۲ رشته به ورودی تابع فرستاده شده است، ولی تابع عدد را دریافت می کند، پس برابر با شکل خروجی آن، خطا نشان داده می شود.

تعریف کلاس ها برای گونه های تازه

در پی اچ پی گونه های int و float و string و array و boolean، گونه های (نوع های) پیش فرض خود پی اچ پی هستند ولی برابر با آنچه که در مطلب های شی گرایی (Object Oriented) می گوییم، می توانیم کلاس های دلخواهی را تعریف کنیم که از این پس به عنوان گونه (نوع) تازه ای در برنامه خواهند بود. کلاس هایی مانند Book و Employee و Customer به عنوان گونه هایی هستند که ویژگی ها (Property) و رفتارهای (Method) یک نمونه از کتاب (ماتیکان و نَسَک نام های فارسی همسان واژه عربی کتاب هستند)، کارمند و سفارش دهنده را تعریف کرده اند.

بنابراین می توانیم، نام کلاس های تعریف شده را به عنوان گونه (نوع) آرگومان های تابع نیز به کار ببریم. در نمونه زیر آرگومان employee$ باید نمونه ای از کلاس Employee یا نمونه ای فرزندان کلاس Employee باشد. در مطلب های کلاس Request در لاراول و اداره کردن درخواست های HTTP خواهید دید که متدهای Route باید نمونه ای (Instance) از کلاس Request را دریافت کنند. به عبارت دیگر آرگومان نخست آنها، به صورت نمونه کلاس Request تعریف شده است.

در کد بالا تنها تابع calculateWags اعلان شده ولی هنوز بدنه آن تعریف نشده است. در کد زیر، آرگومان تابع یا باید نمونه ای از از واسط (Interface) به نام PaymentProviderInterface یا فرزندی از واسط PaymentProviderInterface باشد. در مطلب های پیش رو مفاهیم کلاس ها و واسط ها و ارث بری (Inheritance) را آموزش داده ایم.