[] (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 es una aplicación de inicio construida sobre el marco Silex, Eloquent de Laravel, Cartalyst Sentry y algunos otros componentes integrados y de terceros. SilexStarter tiene como objetivo ayudar a crear aplicaciones simples más rápido, se creó teniendo en cuenta MVC y un enfoque modular, y viene con un módulo de administración básico, incluido el administrador de usuarios y el administrador de módulos.
Por ahora, la rama instalable es solo la rama de desarrollo, puedes instalarla fácilmente usando Composer usando el siguiente comando
composer create-project xsanisty/silexstarter target_dir dev-develop -s dev
Una vez que se completa la instalación del compositor, puede inicializar la aplicación usando el siguiente comando
$cd target_dir
$./xpress app:init
El módulo se puede desarrollar directamente dentro del directorio app/modules
y crear un módulo en su propio espacio de nombres o compilarlo como un paquete de compositor separado, el módulo se puede habilitar o deshabilitar registrándolo en app/config/modules.php
file : app/routes.php
La configuración de ruta se puede crear como una ruta normal de Silex o usando el generador de rutas usando una sintaxis similar a la ruta de Laravel.
Estilo de enrutamiento 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 ' );
Estilo de enrutamiento de 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/*
Básicamente, el controlador puede ser cualquier clase que resida en la carpeta de controladores, se registrará como servicio cuando esté habilitado y se creará una instancia adecuada cuando sea necesario, con todas las dependencias inyectadas.
Supongamos que tenemos PostRepository
y CommentRepository
, primero debemos registrarlos antes de poder inyectarlos correctamente en el controlador.
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 ());
}
}
y ahora, deberíamos poder crear un mapa de ruta para este controlador
Route:: get ( ' /post ' , ' PostController:index ' );
file: app/models/*
SilexStarter usa Eloquent ORM como capa de abstracción de la base de datos, por lo que puede extenderla para crear la clase de modelo Jeyac. La configuración de la base de datos se puede encontrar en 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