[] (https://scrutinizer-ci.com/g/xsanisty/SilexStarter/build-status/develop) [] (https://scrutinizer-ci.com/g/xsanisty/SilexStarter/?branch=develop) [ ] (https://scrutinizer-ci.com/g/xsanisty/SilexStarter/?branch=develop) [] (https://insight.sensiolabs.com/projects/a30a66f9-8110-40c5-8a35-f3c1697dde55)
SilexStarter est une application de démarrage construite sur le framework Silex, Laravel's Eloquent, Cartalyst Sentry et d'autres composants tiers et intégrés. SilexStarter vise à aider à créer des applications simples plus rapidement, il a été construit avec MVC et une approche modulaire à l'esprit, et est livré avec un module d'administration de base, y compris un gestionnaire d'utilisateurs et un gestionnaire de modules.
Pour l'instant, la branche installable est uniquement une branche de développement, vous pouvez facilement l'installer à l'aide de composer en utilisant la commande suivante
composer create-project xsanisty/silexstarter target_dir dev-develop -s dev
une fois l'installation du compositeur terminée, vous pouvez initialiser l'application à l'aide de la commande suivante
$cd target_dir
$./xpress app:init
Le module peut être développé directement dans le répertoire app/modules
et créer un module sur son propre espace de noms ou le construire en tant que package de composition distinct, le module peut être activé ou désactivé en l'enregistrant dans app/config/modules.php
file : app/routes.php
La configuration de la route peut être créée comme une route Silex normale, ou en utilisant le constructeur de route en utilisant une syntaxe similaire à celle de la route de Laravel.
Style de routage Silex
/* the application instance is available as $app in context of route.php */
$ app -> get ( ' /page ' , function (){
return ' I am in a page ' ;
});
$ app -> post ( ' /save ' , function (){
return ' Ok, all data is saved! ' ;
});
/* grouping */
$ app -> group ( ' prefix ' , function () use ( $ app ) {
$ app -> group ( ' page ' , function () use ( $ app ) {
$ app -> get ( ' index ' , function (){
return ' I am in prefix/page/index ' ;
});
});
});
/* resourceful controller */
$ app -> resource ( ' prefix ' , ' SomeController ' );
/* route controller */
$ app -> controller ( ' prefix ' , ' SomeController ' );
Style de routage Laravel
/* route can be built using the Route static proxy */
Route:: get ( ' /page ' , function (){
return ' I am in a page ' ;
});
Route:: post ( ' /save ' , function (){
return ' Ok, all data is saved! ' ;
});
/* grouping */
Route:: group ( ' prefix ' , function () {
Route:: group ( ' page ' , function () {
Route:: get ( ' index ' , function (){
return ' I am in prefix/page/index ' ;
});
});
});
/* resourceful controller */
Route:: resource ( ' prefix ' , ' SomeController ' );
/* route controller */
Route:: controller ( ' prefix ' , ' SomeController ' );
file: app/controllers/*
Le contrôleur peut essentiellement être n'importe quelle classe résidant dans le dossier des contrôleurs, il sera enregistré en tant que service lorsqu'il est activé et sera correctement instancié en cas de besoin, avec toutes les dépendances injectées.
Supposons que nous ayons PostRepository
et CommentRepository
, nous devons d'abord l'enregistrer avant de pouvoir l'injecter correctement dans le contrôleur.
file: app/services/RepositoryServiceProvider.php
<?php
use Silex Application ;
use Silex ServiceProviderInterface ;
class RepositoryServiceProvider implements ServiceProviderInterface
{
public function register( Application $ app )
{
$ app [ ' PostRepository ' ] = $ app ->share( function ( Application $ app ) {
return new PostRepository
});
$ app [ ' CommentRepository ' ] = $ app ->share( function ( Application $ app ) {
return new PostRepository
});
}
public function boot ( Application $ app )
{
}
}
file: app/config/services.php
<?php
return [
' common ' => [
' RepositoryServiceProvider ' ,
]
]
file: app/controllers/PostController.php
<?php
class PostController{
protected $ postRepo ;
protected $ commentRepo ;
public function __construct ( PostRepository $ postRepo , CommentRepository $ commentRepo )
{
$ this -> postRepo = $ postRepo ;
$ this -> commentRepo = $ commentRepo ;
}
public function index (){
return Response:: view ( ' post/index ' , $ this -> postRepo -> all ());
}
}
et maintenant, nous devrions pouvoir créer une feuille de route vers ce contrôleur
Route:: get ( ' /post ' , ' PostController:index ' );
file: app/models/*
SilexStarter utilise Eloquent ORM comme couche d'abstraction de base de données, vous pouvez donc l'étendre pour créer une classe de modèle Jeyac. La configuration de la base de données se trouve dans app/config/database.php
<?php
class Post extends Model{
protected $ table = ' posts ' ;
public function comments (){
return $ this -> hasMany ( ' Comment ' );
}
}
file: app/views/*
file: app/middlewares.php
file: src/Providers/*
file: app/modules/*
file: app/config/modules.php
file: app/modules/**/ModuleProvider.php