我不是PHP专家,所以这件事困扰了我很长一段时间。我可以接受它,但如果我能找到答案,它可以大大改进我的编码!假设我有一种情况——IF/ELSE——必须执行完全相同的cod,但里面有不同的函数。示例:
我所拥有的:
if ($page == 'native') {
// Native page
$title = institutional_settings($id, 'title');
$text = institutional_settings($id, 'text');
$img = institutional_settings($id, 'img');
(... more ... more ... more... )
} else {
// Custom page
$title = personal_settings($id, 'title');
$text = personal_settings($id, 'text');
$img = personal_settings($id, 'img');
(... more ... more ... more... )
}
你看到了吗?有很多重复的代码。
我想要实现的目标:
if ($page == 'native') {
// Native page
Here I need to instruct my code to use the "institutional_settings()" function
with an alias, like "the_magic()" function
} else {
// Custom page
Here I need to instruct my code to use the "personal_settings()" function
with an alias, like "the_magic()" function
}
// And then, I do not need to repeat the code!
// Here is the magic...
$title = the_magic($id, 'title');
$text = the_magic($id, 'text');
$img = the_magic($id, 'img');
(... more ... more ... more... )
我希望我清楚这个想法。谢谢你们!
G。
您可以轻松地将函数名存储为变量,并使用call_user_func_array:调用该函数
$my_func = $page == 'native' ? 'institutional_settings' : 'personal_settings';
$title = call_user_func_array($my_func, [$id, 'text']);
或者如评论中所述,Jeto可以将该函数称为变量函数:
$my_func = $page == 'native' ? 'institutional_settings' : 'personal_settings';
$title = $my_func($id, 'text');