توابع
PHP Manual

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

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

PHP از آرگومان‌های مقدار (پیشفرض) ارسال با مرجع و مقدارهای آرگومان پیشفرض پشتیبانی می‌نماید. فهرست متغیر آرگومان‌ها نیز پشتیبانی شده‌اند مرجع توابع برای func_num_args() func_get_arg() و func_get_args() برای اطلاعات بیشتر ببینید.

Example #1 Passing arrays to functions

<?php
function takes_array($input)
{
    echo 
"$input[0] + $input[1] = "$input[0]+$input[1];
}
?>

آرگومان‌های ارسال شده توسط مرجع

بطور پیشفرض آرگومان‌های تابع بصورت مقدار (بدین ترتیب تغییر مقدار آرگومان در تابع تاثیری بر متغیر در برنامه ندارد). برای این که یک تابع آرگومان‌های خود را تغییر دهد باید آنها را بصورت مرجع به آن ارسال نماییم.

برای ارسال یک آرگومان بصورت مرجع به تابع یک علامت (&) به نام آرگومان در تعریف تابع اضافه نمایید:

Example #2 ارسال پارامترهای تابع با استفاده از مرجع

<?php
function add_some_extra(&$string)
{
    
$string .= 'and something extra.';
}
$str 'This is a string, ';
add_some_extra($str);
echo 
$str;    // outputs 'This is a string, and something extra.'
?>

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

یک تابع ممکن است مقادیر پیشفرض همانند C++ برای آرگومان‌های خطی خود تعریف می‌نماید همانطور که در پایین نشان داده شده است:

Example #3 استفاده از پارامتر پیشفرض

<?php
function makecoffee($type "cappuccino")
{
    return 
"Making a cup of $type.\n";
}
echo 
makecoffee();
echo 
makecoffee(null);
echo 
makecoffee("espresso");
?>

The above example will output:

Making a cup of cappuccino.
Making a cup of .
Making a cup of espresso.

PHP همچنین استفاده از array و نوع ویژه NULL را به عنوان مقدار پیشفرض خود فراهم نموده است به عنوان نمونه:

Example #4 استفاده از انواع غیرخطی به عنوان مقدار پیشفرض پارامتر

<?php
function makecoffee($types = array("cappuccino"), $coffeeMaker NULL)
{
    
$device is_null($coffeeMaker) ? "hands" $coffeeMaker;
    return 
"Making a cup of ".join(", "$types)." with $device.\n";
}
echo 
makecoffee();
echo 
makecoffee(array("cappuccino""lavazza"), "teapot");
?>

مقدار پیشفرض باید یک عبارت ثابت باشد و نه یک متغیر یک عضو کلاس یا فراخوانی تابع (برای نمونه).

توجه نمایید که هنگام استفاده از آرگومان پیشفرض هر پیشفرض در سمت راست هر آرگومان غیرپیشفرض باشد. کد پایین را در نظر بگیرید:

Example #5 استفاده نادرست از آرگومان پیشفرض تابع

<?php
function makeyogurt($type "acidophilus"$flavour)
{
    return 
"Making a bowl of $type $flavour.\n";
}
 
echo 
makeyogurt("raspberry");   // won't work as expected
?>

The above example will output:

Warning: Missing argument 2 in call to makeyogurt() in
/usr/local/etc/httpd/htdocs/phptest/functest.html on line 41
Making a bowl of raspberry .

حال مثال بالا را با مثال زیر مقایسه کنید:

Example #6 استفاده درست از آرگومان‌های پیشفرض

<?php
function makeyogurt($flavour$type "acidophilus")
{
    return 
"Making a bowl of $type $flavour.\n";
}
 
echo 
makeyogurt("raspberry");   // works as expected
?>

The above example will output:

Making a bowl of acidophilus raspberry.

Note: همچنان در PHP 5 مقدار پیشفرض از طریق مرجع ارسال می‌گردد:

فهرست آرگومان‌ها با طول متغیر

PHP 4 و بالاتر از فهرست‌های آرگومان با طول متغیر پشتیبانی می‌نماید. این کار بسیار است و از توابع func_num_args() func_get_arg() و func_get_args() استفاده می‌کند.

دستور ویژه‌ای مورد نیاز نیست و فهرست آرگومان توسط تعریف تابع دقیقا فراهم می‌گردد و بصورت معمول رفتار می‌نماید.


توابع
PHP Manual