Bonjour,
J’aimerai vous présenter mon framework Frash, que j’ai passé sur PHP 7 afin d’utiliser le typage des paramètres. Je développe ce framework afin que tous les composants indépendants d’un projet (Du core du framework au gestionnaire de tests unitaires) y soient intégrés directement.
Aujourd’hui, j’ai trois repos, pour l’installer, pour le framework et pour la documentation, pas très avancée pour l’instant. J’ai plus de 1000 commits sur le repo du framework ( ), plus de 80 issues représentant autant de pistes d’améliorations, et j’ai commencé à utiliser les pull requests, seul, il y a quelques semaines.
J’ai des idées de fonctionnalité à venir, et qui seraient utile : Un BrowserKit (Nom du composant Symfony) ou la création de Mock. Cette dernière servirait principalement pour le gestionnaire de tests unitaires. Le BrowserKit y serait également utile, mais pourrait servir sur d’autres points.
J’ai vu que l’on pouvait créer des sockets en PHP, et c’est une fonctionnalité que je souhaiterai implémenter.
Si le framework commence à vous intéreresser, je place ses liens :
- frash-install : https://github.com/AlixSperoza/frash-install
- frash : https://github.com/AlixSperoza/frash
- frash-docs : https://github.com/AlixSperoza/frash-docs
Concernant les fonctionnalités déjà implémentées, on peut compter sur un moteur de templates, un ORM compatible MySQL et PGSQL (J’aimerai pouvoir intégrer MongoDB, mais ça m’a l’air complexe), et j’ai une idée de la façon d’implémenter les jointures.
Si vous souhaitez m’aider, j’ai fait un petit CONTRIBUTING.md qui précise encore quelques pistes d’améliorations - supplémentaires.
Pour ne pas vous laisser sans démonstration :
Un exemple de Routing.php :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | namespace Configuration; use Frash\Framework\Routing\TreatmentPhp; class Routing extends TreatmentPhp { public function __construct() { $this->group([ 'bundle' => 'AppBundle' ], function(){ $this->group([ 'middleware' => 'Connected' ], function(){ $this->group([ 'middleware' => 'Admin' ], function(){ $this->get('admin', 'AdminController:adminAction'); }); $this->get('interface', 'InterfaceController:interfaceAction'); $this->post('create', 'CreateController:createAction'); }); $this->group([ 'middleware' => 'NoConnected' ], function(){ $this->get('home', 'IndexController:indexAction'); $this->post('connexion', 'IndexController:connexionAction'); }); $this->get('deconnexion', 'IndexController:deconnexionAction'); $this->post('ajax/route', 'AjaxController:routeAction'); }); } } |
Un exemple de vue :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | {{ extend base.tpl }} {{ part body }} <div id="corps"> <div id="emplac_form_conn_home"> {{ @form.start }} <h2 class="text-info">Connexion</h2> {{ @form.ident }}<br> {{ @form.password }} <div id="form_conn_two_droite"> <p id="p_submit_conn">{{ @$form["submit"] }}</p> {{ traduction mdp_oubli }} ? <a href="{{ route mdp_oubli/ }}">{{ traduction mdp_modif }}</a> </div> {{ @form.end }} </div> </div> {{ end_part body }} |
Pour l’affichage "simple" de variable, on peut les déclarer par {{ @variable }} ou {{ @$form["submit"] }}. Dans le cas deuxième cas, dans le controller, le paramètre passé serait sous la forme :
1 2 3 4 5 | return $this->tpl->view('view.tpl', [ 'form' => [ 'submit' => ... ] ]; |
Une piste d’amélioration serait de ne pas avoir à mettre le "@" lorsqu’on met un "$".
Développer un framework seul n’est pas vraiment motivant, si vous avez PHP 7 et/ou que vous êtes intéressé pour m’aider, je vous invite à fork le framework, et à proposer des issues et des PR.
(Pour avoir PHP 7 ( ) : Virtualbox Debian, PHP7-FPM via dépôt Dot-deb)
Si vous voulez que je détaille un sujet, demandez
Je vous remercie