[] (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 ist eine Starteranwendung, die auf dem Silex-Framework, Laravel's Eloquent, Cartalyst Sentry und einigen anderen integrierten Komponenten von Drittanbietern aufbaut. Ziel von SilexStarter ist es, die Erstellung einfacher Anwendungen schneller zu unterstützen. Es basiert auf MVC und einem modularen Ansatz und verfügt über einige grundlegende Verwaltungsmodule, einschließlich Benutzermanager und Modulmanager.
Derzeit ist der installierbare Zweig nur der Entwicklungszweig. Sie können ihn einfach mit Composer installieren, indem Sie den folgenden Befehl verwenden
composer create-project xsanisty/silexstarter target_dir dev-develop -s dev
Sobald die Composer-Installation abgeschlossen ist, können Sie die App mit dem folgenden Befehl initialisieren
$cd target_dir
$./xpress app:init
Das Modul kann direkt im Verzeichnis app/modules
entwickelt und in einem eigenen Namensraum erstellt oder als separates Composer-Paket erstellt werden. Das Modul kann durch Registrierung in app/config/modules.php
aktiviert oder deaktiviert werden
file : app/routes.php
Die Routenkonfiguration kann wie eine normale Silex-Route oder mit dem Routen-Builder unter Verwendung einer ähnlichen Syntax wie die Route von Laravel erstellt werden.
Silex-Routing-Stil
/* 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 ' );
Laravel-Routing-Stil
/* 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/*
Controller können grundsätzlich alle Klassen sein, die sich im Controller-Ordner befinden. Sie werden bei Aktivierung als Dienst registriert und bei Bedarf ordnungsgemäß instanziiert, wobei alle Abhängigkeiten eingefügt werden.
Angenommen, wir haben PostRepository
und CommentRepository
, sollten wir es zuerst registrieren, bevor es ordnungsgemäß in den Controller eingefügt werden kann.
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 ());
}
}
und jetzt sollten wir in der Lage sein, eine Routenkarte zu diesem Controller zu erstellen
Route:: get ( ' /post ' , ' PostController:index ' );
file: app/models/*
SilexStarter verwendet Eloquent ORM als Datenbankabstraktionsschicht, sodass Sie es erweitern können, um die Modellklasse Jeyac zu erstellen. Die Konfiguration der Datenbank finden Sie in 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