Есть ли способ вызвать функцию через переменные?
Например, я хочу вызвать функцию Login(). Могу ли я сделать это:
$varFunction = "Login"; //to call the function
Можно ли использовать $varFunction?
Есть ли способ вызвать функцию через переменные?
Например, я хочу вызвать функцию Login(). Могу ли я сделать это:
$varFunction = "Login"; //to call the function
Можно ли использовать $varFunction?
Да, вы можете:
$varFunction();
Или:
call_user_func($varFunction);
Убедитесь, что вы проверяете $varFunction для вредоносного ввода.
изменить:
Для ваших модулей рассмотрите что-то вроде этого (в зависимости от ваших реальных потребностей):
abstract class ModuleBase {
public function main() {
echo 'main on base';
}
}
class ModuleA extends ModuleBase {
public function main() {
parent::main();
echo 'a';
}
}
class ModuleB extends ModuleBase {
public function main() {
parent::main();
echo 'b';
}
}
function runModuleMain(ModuleBase $module) {
$module->main();
}
И затем вызовите runModuleMain() с правильным экземпляром модуля.
Вы можете использовать...
$varFunction = "Login";
$varFunction();
... и само собой разумеется, чтобы убедиться, что переменная доверена.
<?php
$fxname = 'helloWorld';
function helloWorld(){
echo "What a beautiful world!";
}
$fxname(); //echos What a beautiful world!
?>
Вам действительно стоит рассмотреть использование классов для модулей, поскольку это позволит вам иметь согласованную структуру кода и сохранять имена методов для нескольких модулей. Это также даст вам гибкость в наследовании или изменении кода для каждого модуля.
В этой теме, кроме методов вызова, указанных выше (то есть, используя переменные как имена функций, или call_user_func_ * семейство функций), начиная с PHP 5.3 вы можете использовать закрытия, которые являются динамическими анонимными функциями, что может предоставить вам альтернативный способ сделать то, что вы хотите.