[] (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 adalah aplikasi pemula yang dibangun di atas kerangka Silex, Laravel's Eloquent, Cartalyst Sentry, dan beberapa pihak ketiga lainnya serta komponen bawaan. SilexStarter bertujuan untuk membantu membangun aplikasi sederhana dengan lebih cepat, dibangun dengan mempertimbangkan MVC dan pendekatan modular, dan dilengkapi dengan beberapa modul admin dasar, termasuk manajer pengguna, dan manajer modul.
Untuk saat ini, cabang yang dapat diinstal hanya cabang pengembangan, Anda dapat dengan mudah menginstalnya menggunakan komposer dengan menggunakan perintah berikut
composer create-project xsanisty/silexstarter target_dir dev-develop -s dev
setelah instalasi komposer selesai, Anda dapat menginisialisasi aplikasi menggunakan perintah berikut
$cd target_dir
$./xpress app:init
Modul dapat dikembangkan langsung di dalam direktori app/modules
dan membuat modul pada namespacenya sendiri atau membangunnya sebagai paket komposer terpisah, modul dapat diaktifkan atau dinonaktifkan dengan mendaftarkannya di app/config/modules.php
file : app/routes.php
Konfigurasi rute dapat dibuat seperti rute Silex biasa, atau menggunakan pembuat rute menggunakan sintaks serupa seperti rute Laravel.
Gaya perutean 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 ' );
Gaya perutean 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/*
Pengontrol pada dasarnya dapat berupa kelas apa pun yang berada di folder pengontrol, ia akan didaftarkan sebagai layanan ketika diaktifkan, dan akan dipakai dengan benar bila diperlukan, dengan semua ketergantungan dimasukkan.
Asumsikan kita memiliki PostRepository
dan CommentRepository
, kita harus mendaftarkannya terlebih dahulu sebelum dapat disuntikkan dengan benar ke pengontrol.
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 ());
}
}
dan sekarang, kita harus bisa membuat peta rute ke pengontrol ini
Route:: get ( ' /post ' , ' PostController:index ' );
file: app/models/*
SilexStarter menggunakan Eloquent ORM sebagai lapisan abstraksi database, sehingga Anda dapat memperluasnya untuk membuat model classJeyac. Konfigurasi database dapat ditemukan di 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