Je développe une app open source avec Silex et MongoDB :
https://github.com/Mparaiso/Silex-Blog-AppJe pense que le tuto aurait pu être simplifié et utiliser de simples fonctions à la place de controlleur providers.
1 2 3 4 5 6 7 8
|
// loading ...
$app = new Silex\Application();
$app->get("/route/{variable}",
function($variable,Silex\Application $app){
// code
}
); |
c'est l’intérêt principal des frameworks Sinatra like ( flask , express, slim )même si j'utilise les controlleurs providers , Silex permet développer rapidement une api ou un service web, tout en évitant le code spaghetti et en séparant la couche présentation de la couche applicative , à charge du développeur de découpler l'application des services , mais c'est facile grâce à pimple. Un service est une lib totalement indépendant du reste de l'app pouvant être incorporée à une app grace à un simple ServiceProvider.
A savoir qu'on peut aussi faire un mount de routes définies dans un autre fichier avec un simple return d'une instance de silex app à la fin du fichier ( ce qui permet de modulariser l'architecture d'une app , sans avoir recours à des classes , qui sont utiles uniquement si on se sert du constructeur ( init , injection de dépendance ,etc ... ). Si il n'y pas d'états partagés entre les méthodes , et puisque php supporte pleinement les "modules" , utiliser des fonctions a du sens.
$index->match("/", 'App\Controller\IndexController::index');
si on se sert du constructeur dans le controlleur , il me semble qu'on se heurte à de sérieux problèmes dans php quand les méthodes ne sont pas statiques. il vaut mieux écrire un callback de cette forme:
$index->match("/", array($this,"index"));
puisque la classe est instanciée.
L'avantage de Silex par rapport à d'autres frameworks Sinatra like c'est qu'il n'utilise pas de singleton , de classes statiques et autre variables globales. Et pimple permet le lazy-loading de services , et l'imbrication d'applications Silex.
Une petite remarque , même si la lib de base est légère par rapport ZF ou SF je n'aime pas trop l'appelation micro ou mini framework. cela donne un sentiment d'une librairie jouet , alors que Silex est totalement compatible avec le reste des librairies de Symfony 2 . La différence est dans la façon dont on bootstrap une application. Ma lib utilise la validation de symfony , les formulaires de symfony et le module de sécurité de symfony. Mon app a plus de code venant directement de symfony 2 que du kernell de Silex, est-ce donc une app symfony ou Silex ?
0 |
0 |