آموزش PHP 7 – فصل چهاردهم: فانکشن ها (Functions)

یک فانکشن یا عملیات، یک بلاک کد است که می توان آن را بار ها با صدا زدن نام، مورد استفاده قرار داد. زبان PHP دارای هزاران فانکشن از قبل تعریف شده است و همچنین برنامه نویسان می توانند فانکشن های دلخواه خود را ساخته و از آن ها در طول برنامه نویسی استفاده کنند.

آموزش PHP 7 – فصل چهاردهم: فانکشن ها (Functions)

قدرت اصلی زبان PHP به فانکشن هایی است که پشتیبانی می کند. این زبان بیش از 1000 فانکشن درونی دارد که به برنامه نویسان قابلیت های کاربردی مختلفی را ارائه می کنند.

در کنار فانکشن های درونی PHP، برنامه نویسان قادرند تا فانکشن های دلخواه خود را تولید کرده و در قسمت های مختلف اسکریپت خود مورد استفاده قرار دهند.

تعریف فانکشن در زبان PHP

یک فانکشن، یک بلاک کد است که می توان آن را بار ها با صدا زدن نام، مورد استفاده قرار داد.

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

سینتکس تعریف یک فانکشن در زبان PHP به صورت زیر است:

function functionName() {
    code to be executed;
}

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

توصیه می شود که نام فانکشن نشان دهنده عملیاتی باشد که آن فانکشن انجام می شود.

نام فانکشن ها Case Sensitive نیستند، یعنی به حروف بزرگ و کوچک حساس نیستند.

مثال زیر نحوه تعریف یک فانکشن را نشان می دهد. ما در این مثال یک فانکشن به نام writeMsg() تعریف کرده و این فانکشن را برای اجرا شدن صدا زده ایم:


فصل 14 – مثال 1

پارامتر های یک فانکشن در PHP

اطلاعات را می توان از طریق پارامتر ها به فانکشن ها انتقال داد و درون فانکشن از آن استفاده کرد.

در زمان تعریف یک فانکشن، بعد از مشخص کردن نام آن فانکشن، در بین پرانتز باید پارامتر ها را مشخص کنیم. این پارامتر هایی است که در زمان صدا زدن فانکشن باید به آن داده شود تا عملیات انجام شود. اگر چند پارامتر قرار است تعریف شود، باید از , برای جدا سازی آن ها استفاده کرد.

در زمان صدا زدن فانکشن مقادیری که به آن به عنوان پارامتر داده می شوند، باید در بین پرانتز قرار بگیرند و اگر چندتایی هستند از , برای جدا سازی آن ها باید استفاده کرد.

به عنوان مثال، در کد زیر ($fname) پارامتری است که ما می خواهیم به همراه فانکشن familyName دریافت کنیم. یعنی هر زمان که کاربر familyName را صدا زد، حتما باید یک مقدار به فانکشن بدهد که درون فانکشن مساوی $fname قرار خواهد گرفت. این مقدار انتقال داده شده از طریق متغیر $fname در فانکشن استفاده خواهد شد.


فصل 14 – مثال 2

مثال زیر تعریف یک فانکشن با چند پارامتر را نشان می دهد:


فصل 14 – مثال 3

زبان برنامه نویسی PHP به یک زبان Loosely Typed است

منظور از این جمله این است که زبان PHP به نوع داده در هنگام تعریف متغیر دقت نمی کند. یعنی یک متغیر در طول زندگی خود می تواند مقادیری از انواع مختلف را نگه داری کند (مانند رشته و عدد).

زبان PHP به طور اتوماتیک متوجه می شود که نوع یک مقدار داده شده چیست و نوع متغیر را به طور اتوماتیک متناس با آن تغییر می دهد.

در این زبان اگر شما یک رشته را با عدد جمع بزنید ارور ایجاد نمی شود زیرا به صورت اتوماتیک انواع داده طوری تغییر می کنند که عملیات با موفقیت انجام شود.

در PHP 7 اما قابلیت تعیین نوع پارامتر ها ارائه شده است. اکنون شما می توانید کاری کنید که در صورت مغایرت در انواع داده برای عملیات های مختلف، پیغام خطا Fatal Error ایجاد شود. البته باید strict را نیز با فانکشن declare(strict_types=1) فعال کنید.

به مثال زیر توجه کنید، در این مثال strict فعال شده است، پس فانکشن در صورت مواجهه با نوع داده نامتناسب با ارور مواجه می شود:


فصل 14 – مثال 4

در صورت اجرای مثال بالا با پیغام خطای زیر مواجه خواهید شد:


توجه کنید که باید حتما از فانکشن declare(strict_types=1) در ابتدای فایل خود استفاده کنید. این فانکشن برای سیستم مشخص می کند که تمامی عملیات های این صفحه باید به صورت strict اجرا شوند.

به مثال زیر توجه کنید، در این مثال strict فعال نشده است، پس فانکشن در صورت مواجهه با نوع داده نامتناسب با ارور مواجه نمی شود:


فصل 14 – مثال 5

مقادیر پیشفرض برای پارامتر های فانکشن

پاارمتر های درون یک فانکشن می توانند دارای مقادیر پیشفرض باشند. یعنی اگر در هنگام صدا زده شدن، مقداری انتقال داده نشود به صورت پیشفرض مقداری خاص به آن ها منتسب می شود.

به مثال زیر دقت کنید، در مثال زیر اگر به فانکشن setHeight پارامتر minheight را انتقال ندهید، به طور پیشفرض برابر 50 خواهد شد:


فصل 14 – مثال 6

بازگرداندن مقدار بعد از اجرای فانکشن

برای بازگرداندن یک مقدار بعد از اجرای یک فانکشن باید از کلمه کلیدی return استفاده کنید.


فصل 14 – مثال 7

بعد از بازگرداندن مقدار، هیچ کدی دیگر درون فانکشن اجرا نخواهد شد.

تعیین نوع داده بازگشتی از فانکشن

زبان PHP 7 از قابلیت تعیین نوع داده برای دستور return پشتیبانی می کند. البته مانند تعیین نوع داده برای متغیر ها، برای اجرای آن باید حالت strict را فعال سازی کنید.

در صورتی که مقدار داده بازگشتی با نوع داده تعیین شده برای دستور return مطابقت نداشته باشد، سیستم fatal error نشان خواهد داد.

برای تعیین نوع داده بازگشتی، در هنگام تعیین فانکشن، قبل از علامت } باید علامت : قرار دهید و سپس نوع داده بازگشتی را مشخص کنید. به طور مثال function addNumbers(float $a, float $b) : float{}

مانند مثال زیر:


فصل 14 – مثال 8

البته توجه داشته باشید که شما می توانید نوع داده متفاوتی نسبت به پارامتر های دریافتی، باز گردانید. فقط باید نوع داده بازگشتی با دستور return با نوع تعیین شده برای آن تطابق داشته باشد. به عنوان مثال فانکشن زیر float دریافت می کند و int باز می گرداند:


فصل 14 – مثال 9

ویدیوها و مطالب مشابه