Simplicité est le mot qui définit ce framework PHP. l'approche académique n'a pas été oubliée et tente une implémentation du modèle PAC :
Package "test" pour un "hello world"
/myFirstApp/package/test/test.php : (C)ontroleur
$result = $this->getModel()->testWorkflow();
if($result){
$this->getView()->test();
} else {
throw new Exception('Pb au sein du workflow de test',500);
}
}
/myFirstApp/package/test/test_view.php : (P)résentation
$html = 'Hello world';
$this->output($html);
}
/myFirstApp/package/test/test_model.php : modèle d'(A)bstration
return true;
}
Cet exemple est présent au sein du dépôt : téléchargez là.
Explication de l'exemple "test"
Le gestionnaire de routage reste simple (loin des possibilités offertes par
Symfony) et implémente REST.
l'url suivante : http://www.monsite.local/test/hello/ affiche notre hello world.
Décomposition de l'appel
- Nom du package appelé : "test". Il est représenté par un répertoire dans le répertoire global "package"
- Action appelée : "hello". Cette action est une méthode de la class de type "contrôleur". Le contrôleur va demander à la vue son contenu et va en faire un display.
Dans cet exemple, avant d'afficher le "hello world", le contrôleur fait un appel au model pour vérifier le résultat d'un workflow. Si "true" est renvoyé, alors le contrôleur fera le display de la vue. Dans le cas contraire, il lancera une Exception.
Fonctionnement du modèle d'abstraction
Le modèle d'abstraction regroupe les méthodes de workflows et d'accès au SGBD. Dans notre exemple, on fait l'appel à un workflow
qui retourne toujours vrai. Le fait de séparrer (au choix du développeur) les workflows et les requêtes,
permet de factoriser les accès au SGBD. Au sein d'un modèle, il est tout a fait possible et recommandé de faire appel à un autre model
d'un autre package. Il est donc possible d'empiler les workflows et de les décomposer en objet métier.
le sens "Métier" ici veut dire le métier de l'entreprise.
Gestion de l'exception
La levée d'une "exception" suppose que l'on a préparé son code pour la recevoir et la traiter. Au sein du framework, le bootstrap de votre application
"index.php" est construit sur un try {} catch (Exception $e) {}.
Vous pouvez en fonction du code de retour, utiliser un package dont le rôle sera par exemple d'afficher votre 404.
En cliquant sur ce lien, vous allez générer
cette fameuse 404. La ressource demandée n'existe pas, car le gestionnaire de routage n'a pu déterminer le "package" appelé et l' "action"
demandée. Il a donc levé une exception avec le code de retour 404.