آموزش Variable functions در php

Image تحقیقات

آموزش Variable functions در php

با سلام خدمت دوستان عزیزم

امروز  میخواهم درباره 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 در عمل کاربردی تر می باشد .

خب مقاله امروز هم به پایان رسید.خوشحال میشم مثل همیشه نظراتتون رو اعلام کنید.