آموزش Variable functions در php
- توسط : علی حسین شهابی
- 0 نظر
با سلام خدمت دوستان عزیزم
امروز میخواهم درباره Variable functions در زبان php صحبت کنیم .
bool is_callable ( mixed function_name [, bool syntax_only [, string callable_name]])
mixed call_user_func ( callback function [, mixed parameter [, mixed ...]])
mixed call_user_func_array ( callback function [, array parameters])
همانطور که می دانید در php مبحثی با عنوان variable variables وجود دارد خب علاوه بر آن variable functions هم وجود دارد که مبحث امروز ما هست .
<?php
$func = "sqrt";
print $func(49);
Variable functions به معنای این است که نام یک تابع را داخل یک متغیر ذخیره کنی و سپس از آن متغیر به عنوان نام تابع استفاده کنید . در مثال بالا تابع sqrt را داخل یک متغیر ریختیم و سپس در خط بعدی از آن متغیر مثل یک تابع استفاده کردیم .
فرایند کار به این صورت است که php به مقدار داخل متغیر نگاه می کند , سپس متوجه می شود که نام تابع داخل آن قرار دارد سپس تابع آن را اجرا می نماید.
خروجی قطع کد بالا عدد 7 است .
variable functions ها مباحث غیر معمول و غیر عادی ای هستن بنابر این وقتی با آنها کار می کنید احتمال اشتباه کردن زیاد است . به همین دلیل php چند تابع دیگری که مربوط به variable functions ها می باشد را معرفی کرده تا از این اشتباهات در هنگاه کدنویسی جلوگیری کند .
- is_callable(),
- call_user_func()
- call_user_func_array()
تابع is_callable یک متغیر یا رشته را به عنوان پارامتر می گیرد سپس چک می کند آیا تابعی با این تام وجود دارد یا خیر . بنابراین اگه تابعی همنام پاررامتر پیدا کند true بر می گرداند درغیر این صورت false بر می گرداند.
مثال :
<?php
$func = "sqrt";
if (is_callable($func)) {
print $func(49);
}
عمکرد تابع call_user_func و call_user_func_array تقریبا مشابه هم می باشد . هر دو در پارامتر اول نام یک تابع را می گیرند و در صورت ممکن آن را صدا می کند ولی با این تفاوت که تابع call_user_func در پارامتر های بعدی . مقدارهایی که باید به آن تابع هست را جدا جدا دریافت می کند ولی تابع call_user_func_array همانطور که از نام اش هم می توان حدس زد این مقادیر را در قالب یک آرایه دریافت می کند و به تابع مورد نظر ارسال می کند .
مثال :
<?php
$func = "str_replace";
$output_single = call_user_func($func, "monkeys", "giraffes", "Hundreds and thousands of monkeys\n");
$params = array("monkeys", "giraffes", "Hundreds and thousands of monkeys\n");
$output_array = call_user_func_array($func, $params);
echo $output_single;
echo $output_array;
در مثال بالا هر دو این توابع را استفاده کردیم و خروجی هر دو این توابع یکسال می باشد .
به نظر من تابع call_user_func_array در عمل کاربردی تر می باشد .
خب مقاله امروز هم به پایان رسید.خوشحال میشم مثل همیشه نظراتتون رو اعلام کنید.