توابع (Functions)
تابع (Function) یک بسته کد تکرارپذیر است. یعنی یک کار را چندبار لازم داری؟ تابع می نویسی، سپس هر وقت خواستی صدا می زنی. اینطوری کدت مرتب می ماند و اشتباه کمتر می شود.
توابع آماده PHP
PHP بیش از هزار تابع آماده دارد. اما علاوه بر آن، می توانی تابع اختصاصی خودت بسازی.
ساختن تابع
با کلمه function شروع کن، بعد نام تابع، بعد آکولادها.
function myMessage() {
echo "Hello world!";
}
نکته: نام تابع باید با حرف یا زیرخط شروع شود. بزرگ و کوچک بودن مهم نیست.
صدا زدن تابع
نام تابع را بنویس و پرانتز را اضافه کن. همین.
function myMessage() {
echo "Hello world!";
}
myMessage();
آرگومان ها (Arguments)
آرگومان مثل «ورودی» است. داخل پرانتز می آید و مثل متغیر (Variable) رفتار می کند.
یک آرگومان
function familyName($fname) {
echo "$fname Refsnes.<br>";
}
familyName("Jani");
familyName("Hege");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
دو آرگومان
function familyName($fname, $year) {
echo "$fname Refsnes. Born in $year <br>";
}
familyName("Hege", "1975");
familyName("Stale", "1978");
familyName("Kai Jim", "1983");
مقدار پیش فرض آرگومان
اگر ورودی ندهی، مقدار پیش فرض استفاده می شود.
function setHeight($minheight = 50) {
echo "The height is : $minheight <br>";
}
setHeight(350);
setHeight();
setHeight(135);
setHeight(80);
برگرداندن مقدار (return)
با return خروجی تابع را برمی گردانی.
function sum($x, $y) {
$z = $x + $y;
return $z;
}
echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4);
ارسال با ارجاع (&)
به صورت عادی «کپی» می رود. با & همان متغیر اصلی تغییر می کند.
function add_five(&$value) {
$value += 5;
}
$num = 2;
add_five($num);
echo $num;
تعداد آرگومان متغیر (...)
با سه نقطه، هرچند ورودی بدهی، در یک آرایه جمع می شود.
جمع آرگومان ها
function sumMyNumbers(...$x) {
$n = 0;
$len = count($x);
for ($i = 0; $i < $len; $i++) {
$n += $x[$i];
}
return $n;
}
$a = sumMyNumbers(5, 2, 6, 2, 7, 7);
echo $a;
باید آخرین پارامتر باشد
function myFamily($lastname, ...$firstname) {
$txt = "";
$len = count($firstname);
for ($i = 0; $i < $len; $i++) {
$txt = $txt . "Hi, $firstname[$i] $lastname.<br>";
}
return $txt;
}
$a = myFamily("Doe", "Jane", "John", "Joey");
echo $a;
هشدار: اگر ... آخرین نباشد، خطا می گیری.
function myFamily(...$firstname, $lastname) {
$txt = "";
$len = count($firstname);
for ($i = 0; $i < $len; $i++) {
$txt = $txt . "Hi, $firstname[$i] $lastname.<br>";
}
return $txt;
}
$a = myFamily("Doe", "Jane", "John", "Joey");
echo $a;
نوع گذاری سست و strict
PHP سست نوع است؛ ولی می توانی نوع پارامترها را اعلام کنی.
بدون strict
function addNumbers(int $a, int $b) {
return $a + $b;
}
echo addNumbers(5, "5 days");
با strict
<?php declare(strict_types=1);
function addNumbers(int $a, int $b) {
return $a + $b;
}
echo addNumbers(5, "5 days");
?>
نوعِ بازگشت (Return Type)
می توانی نوع خروجی تابع را هم اعلام کنی.
<?php declare(strict_types=1);
function addNumbers(float $a, float $b) : float {
return $a + $b;
}
echo addNumbers(1.2, 5.2);
?>
می توانی نوع خروجی را متفاوت بگذاری، فقط تبدیل را صحیح انجام بده.
<?php declare(strict_types=1);
function addNumbers(float $a, float $b) : int {
return (int) ($a + $b);
}
echo addNumbers(1.2, 5.2);
تمرین سه مرحله ای
- یک تابع با یک آرگومان بساز و چاپ کن.
- برای همان تابع مقدار پیش فرض بگذار.
- نوعِ ورودی و خروجی را اعلام کن و تست کن.
ادامه مطالعه: ادامه حلقه، آرایه ها.
جمع بندی سریع
- تابع کد تکراری را جمع می کند.
- آرگومان ورودیِ تابع است.
- پیش فرض یعنی ورودی اختیاری.
- return خروجی را برمی گرداند.
- strict نوع ها را سخت گیر می کند.