Je suis en train d'écrire un framework micro MVC, et je veux pouvoir exécuter une fonction basée sur l'action dans l'URL donnée. Je fais actuellement:Appel d'une fonction basée sur une variable dans le contrôleur parent
function action($id, $function){
${$id}->{$function}();
}
Lorsque l'$ id est le modèle/vue/contrôleur pour charger, et la fonction $ est l'action. Cela fonctionne apparemment, mais pas dans le MainController. Je devrais le mettre dans le script de démarrage qui serait limitant car je veux que les gens puissent exécuter une action depuis l'intérieur de la vue afin qu'ils puissent effectuer différentes actions en fonction de ce qu'ils donnent à la fonction. Quelqu'un connaît-il un moyen de contourner cela pour que je puisse appeler une fonction du contrôleur enfant depuis le MainController?
À la votre!
EDIT: Je ai fait le travail d'action en faisant:
if($action != false){
${$id}->{$action}();
} else {
include("system/views/".$id.".php");
}
$ id et $ action sont toujours définis, il fonctionne très bien. Le seul problème que j'ai maintenant que toutes les fonctions doivent avoir toutes les globals (sa longue liste):
global $id;
global ${$id};
global $site;
global $start;
global $action;
global $param;
global $helper;
global $model;
si elles ont besoin l'un de ces (qui, ils le font si vous avez besoin d'appeler des méthodes de la maincontroller/helper/model) ...
Je ne sais pas pourquoi les variables ne sont pas transmises dans les fonctions. J'ai déclaré la classe pour l'ID respectif aussi ...
EDIT 2: Exemple.
function testFunction(){
global $helper;
$helper->test();
$this->render("home");
}
Works, mais lorsque je retire l'aide de $ mondiale ; échoue. Même si j'ai une charge de globals au démarrage, construction de l'enfant et du parent, elle échoue toujours. Cela arrive également pour toutes les fonctions (nécessitant des globales). Quelqu'un peut-il aider?