将相应使用的函数的名称更改为IF/ELSE语句



我不是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');

相关内容

  • 没有找到相关文章

最新更新