توابع در PHP

From ویکی کد
Jump to navigation Jump to search
Main Page Tutorial
Php-menu.png
موارد آموزشی
۱خانه
۲مقدمه
۳نصب
۴شیوهٔ نوشتار
۵کامنت‌ها
۶متغیرها
۷دستورات چاپ
۸انواع داده
۹مقادیر متنی
۱۰اعداد
۱۱ثابت‌ها
۱۲عملگرها
۱۳دستورات if...else…elseif
۱۴دستور Switch
۱۵حلقه‌ها
۱۶توابع
۱۷آرایه‌ها
۱۸متغیرهای سراسری
فرم‌ها در PHP
PHP پیشرفته
شیء گرایی در PHP
پایگاه داده MySQL
XML در PHP
AJAX در PHP
مثال‌های PHP
مرجع PHP

قدرت واقعی PHP برگرفته از توابع آن است. [۱]

PHP بیش از ۱۰۰۰ تابع از پیش تعریف شده دارد، و به علاوه شما می‌توانید توابع شخصی خود را نیز بسازید.

توابع از پیش تعریف شده در PHP

PHP بیش از ۱۰۰۰ تابع از پیش تعریف شده دارد که می‌توانند به صورت مستقیم از درون یک اسکریپت، برای انجام یک کار به خصوص فراخوانی شوند.

لطفاً مرجع PHP ما را برای مشاهده نمایی از توابع از پیش تعریف شده در PHP ببینید.

توابع تعریف شده توسط کاربر در PHP

در کنار توابع از پیش تعریف شده در PHP، این امکان وجود دارد که توابع خود را نیز بسازید.

  • یک تابع بلاکی از دستورات است که می‌توان از آن چندین بار در برنامه استفاده کرد
  • یک تابع در هنگام بارگذاری صفحه به صورت خودکار اجرا نمی‌شود
  • یک تابع با فراخوانی آن اجرا می‌گردد

ساخت یک تابع تعریف شده توسط کاربر در PHP

یک تابع تعریف شده توسط کاربر با کلمه function آغاز می‌شود:

شیوه نوشتار

function functionName() {
    code to be executed;
}
نکته: نام یک تابع می‌بایست با یک حرف یا یک کاراکتر زیر خط _ آغاز شود. نام توابع حساس به حروف کوچک و بزرگ نیستند.
نکته: برای تابع خود نامی انتخاب کنید که به کاری که تابع انجام می‌دهد اشاره کند.

در مثال زیر، ما یک تابع به نام "writeMsg()" ایجاد کردیم. آکولاد باز ({) آغاز کد درون تابع را مشخص می‌کند، و آکولاد بسته (}) انتهای کد درون تابع را مشخص می‌کند. تابع عبارت "Hello world!" را در خروجی چاپ می‌کند. برای فراخوانی تابع، فقط نام تابع را به همراه ( ) بنویسید:

مثال

1 <?php
2 function writeMsg() {
3     echo "Hello world!";
4 }
5 
6 writeMsg(); // call the function
7 ?>

مشاهدهٔ نتیجه


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

اطلاعات را می‌توان به وسیله آرگومان‌ها به توابع پاس داد. یک آرگومان همانند یک متغیر است.

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

مثال زیر یک تابع دارد که تابع آن یک آرگومان ($fname) دارد. زمانی که تابع familyName() فراخوانی می‌شود، ما یک نام (برای مثال jani) را به آن پاس می‌دهیم، و نام درون تابع استفاده می‌شود، که موجب چاپ چندین نام، اما با یک نام خانوادگی یکسان می‌شود:

مثال

 1 <?php
 2 function familyName($fname) {
 3     echo "$fname Refsnes.<br>";
 4 }
 5 
 6 familyName("Jani");
 7 familyName("Hege");
 8 familyName("Stale");
 9 familyName("Kai Jim");
10 familyName("Borge");
11 ?>

مشاهدهٔ نتیجه


مثال زیر، یک تابع با دو آرگومان ($fname و $year) دارد:

مثال

1 <?php
2 function familyName($fname, $year) {
3     echo "$fname Refsnes. Born in $year <br>";
4 }
5 
6 familyName("Hege", "1975");
7 familyName("Stale", "1978");
8 familyName("Kai Jim", "1983");
9 ?>

مشاهدهٔ نتیجه


PHP یک زبان معمولی است

توجه کنید، که در مثال بالا، ما برای PHP نوع داده متغیر را مشخص نکردیم.

PHP به صورت خودکار نوع داده متغیر را با توجه به مقدار آن مشخص می‌کند. از آنجایی که نوع داده‌ها در PHP توسط خود کاربر مشخص نمی‌شوند، شما می‌توانید هر کاری مانند جمع کردن یک رشته (متنی) با یک مقدار صحیح (به انگلیسی: Integer) را بدون دریافت خطایی انجام دهید.

در نسخه 7 PHP، تعاریف نوع داده‌ها اضافه شدند. این امر به ما این امکان را می‌دهد که نوع داده مورد نظر خود را در هنگام تعریف یک تابع مشخص کنیم، و با اضافه کردن تعریف strict، در صورتی که نوع داده‌ها با یک دیگر مغایرت داشته باشند، موجب بروز خطای "Fatal Error" خواهد شد.

در مثال زیر، ما سعی می‌کنیم که یک عدد و یک داده رشته‌ای (متنی) را به یک تابع بدون استفاده از strict ارسال کنیم:

مثال

1 <?php
2 function addNumbers(int $a, int $b) {
3     return $a + $b;
4 }
5 echo addNumbers(5, "5 days");
6 // since strict is NOT enabled "5 days" is changed to int(5), and it will return 10
7 ?>

مشاهدهٔ نتیجه


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

در مثال زیر ما سعی می‌کنیم که یک داده عددی و یک داده رشته‌ای (متنی) را به تابع ارسال کنیم، اما این بار تعریف strict را اضافه کرده‌ایم:

مثال

1 <?php declare(strict_types=1); // strict requirement
2 
3 function addNumbers(int $a, int $b) {
4     return $a + $b;
5 }
6 echo addNumbers(5, "5 days");
7 // از آنجایی که تعریف حالت سخت گیرانه یا strict اضافه شده‌است و " 5 days" از نوع عددی و صحیح نیست، موجب بروز خطا خواهد شد.
8 // since strict is enabled and "5 days" is not an integer, an error will be thrown
9 ?>

مشاهدهٔ نتیجه

تعریف حالت strict موجب می‌شود که کدها به صورت صحیح و در حالت اصلی نوشته شوند.

مقادیر پیش فرض آرگومان در PHP

مثال زیر به شما نشان می‌دهد که چگونه از یک پارامتر پیشفرض استفاده کنید. اگر شما تابع setHeight() را بدون آرگومان‌های آن، فراخوانی کنید این تابع مقادیر پیش‌فرض را به عنوان آرگومان در نظر می‌گیرد:

مثال

 1 <?php declare(strict_types=1); // strict requirement
 2 function setHeight(int $minheight = 50) {
 3     echo "The height is : $minheight <br>";
 4 }
 5 
 6 setHeight(350);
 7 setHeight(); // will use the default value of 50
 8 setHeight(135);
 9 setHeight(80);
10 ?>

مشاهدهٔ نتیجه


توابع در PHP - مقادیر بازگشتی

برای اینکه یک تابع بتواند یک مقدار را برگرداند، از دستور return استفاده کنید:

مثال

 1 <?php declare(strict_types=1); // strict requirement
 2 function sum(int $x, int $y) {
 3     $z = $x + $y;
 4     return $z;
 5 }
 6 
 7 echo "5 + 10 = " . sum(5, 10) . "<br>";
 8 echo "7 + 13 = " . sum(7, 13) . "<br>";
 9 echo "2 + 4 = " . sum(2, 4);
10 ?>

مشاهدهٔ نتیجه


تعریف نوع برگشتی در PHP

ورژن 7 PHP از تعریف نوع برای دستور return پشتیبانی می‌کند. در صورت مغایرت نوع داده‌ها با یکدیگر، همانند تعریف نوع برای آرگومان‌های تابع به وسیله حالت strict، موجب خطای "Fatal Error" می‌شود.

برای تعریف یک نوع داده برای مقدار بازگشتی تابع، یک دو‌نقطه (:) و نوع داده را قبل از آکولاد باز ({) هنگام تعریف تابع اضافه کنید.

در مثال زیر، ما نوع بازگشتی را برای تابع مشخص کردیم:

مثال

1 <?php declare(strict_types=1); // strict requirement
2 function addNumbers(float $a, float $b) : float {
3     return $a + $b;
4 }
5 echo addNumbers(1.2, 5.2);
6 ?>

مشاهدهٔ نتیجه


شما می‌توانید یک نوع داده متفاوت از نوع داده آرگومان‌ها را به عنوان نوع داده بازگشتی تابع مشخص کنید، اما اطمینان حاصل کنید که نوع داده آن درست است:

مثال

1 <?php declare(strict_types=1); // strict requirement
2 function addNumbers(float $a, float $b) : int {
3     return (int)($a + $b);
4 }
5 echo addNumbers(1.2, 5.2);
6 ?>

مشاهدهٔ نتیجه


تمرینات PHP

Time2wait.svg ساخت نمونه مثال این بخش در دست اقدام است.



منابع آموزشی