سلام من چهار تابع دارم با چهار اسم مختلف
میخام اسم تابع رو توی یک متغیر ذخیره کنم و با اون متغیر اون تابع رو فراخونی کنم- آیا این کار شدنیه ؟
البته میدونم که میتونم با switchCase این عمل رو شبیه سازی کنم اما خواستم بپرسم پیشرفتهتر و داینامیک تر هم میشه این کار رو کرد؟
$functionName="functionOne";// functionTwo , functionThree , functionFour
$functionName();
بله شدنی هست.. میتونید استفاده کنید
یک نمونه اش هم کد زیر:
<?php
function myFunction(){
echo "Hello World";
}
$call = 'myFunction';
$call();
?>
سلام به مثالهای زیر از سایت php.net توجه بفرمایید :
https://www.php.net/manual/en/functions.variable-functions.php
<?php
function foo() {
echo "In foo()<br />\n";
}
function bar($arg = '')
{
echo "In bar(); argument was '$arg'.<br />\n";
}
// This is a wrapper function around echo
function echoit($string)
{
echo $string;
}
$func = 'foo';
$func(); // This calls foo()
$func = 'bar';
$func('test'); // This calls bar()
$func = 'echoit';
$func('test'); // This calls echoit()
?>
اگر داخل کلاس می خواهید این کار رو انجام بدید ، میتونید از Magic Function __call استفاده کنید. یه راه دیگر هم داخل کلاس ها اینه که متدها رو تعریف کرده باشید و بعد برای فراخوانی به صورت زیر عمل کنید ( در حالت کلاس و تابع غیر استاتیک مثلا ):
public function invoke($functionName, $inputs)
{
try {
return $this->{$functionName}($inputs);
}catch (\Exception $exception) {
throw $exception;
}
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟