[] (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는 Silex 프레임워크, Laravel의 Eloquent, Cartalyst Sentry 및 기타 타사 및 내장 구성 요소를 기반으로 구축된 시작 애플리케이션입니다. SilexStarter는 간단한 애플리케이션을 더 빠르게 구축하는 데 도움을 주는 것을 목표로 하며 MVC 및 모듈식 접근 방식을 염두에 두고 구축되었으며 사용자 관리자 및 모듈 관리자를 포함한 몇 가지 기본 관리 모듈이 함께 제공됩니다.
현재 설치 가능한 브랜치는 개발 브랜치뿐입니다. 다음 명령을 사용하여 작곡가를 사용하여 쉽게 설치할 수 있습니다.
composer create-project xsanisty/silexstarter target_dir dev-develop -s dev
Composer 설치가 완료되면 다음 명령을 사용하여 앱을 초기화할 수 있습니다.
$cd target_dir
$./xpress app:init
모듈은 app/modules
디렉토리 내에서 직접 개발할 수 있으며 자체 네임스페이스에 모듈을 생성하거나 별도의 작곡가 패키지로 빌드할 수 있습니다. 모듈은 app/config/modules.php
에 등록하여 활성화하거나 비활성화할 수 있습니다.
file : app/routes.php
경로 구성은 일반 Silex 경로처럼 생성하거나 Laravel의 경로와 유사한 구문을 사용하는 경로 빌더를 사용하여 생성할 수 있습니다.
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 ' );
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/*
컨트롤러는 기본적으로 컨트롤러 폴더에 있는 모든 클래스가 될 수 있으며 활성화되면 서비스로 등록되고 필요할 때 모든 종속성이 주입된 상태로 적절하게 인스턴스화됩니다.
PostRepository
및 CommentRepository
있다고 가정하면 컨트롤러에 제대로 주입되기 전에 먼저 등록해야 합니다.
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 ());
}
}
이제 이 컨트롤러에 대한 경로 맵을 생성할 수 있습니다.
Route:: get ( ' /post ' , ' PostController:index ' );
file: app/models/*
SilexStarter는 Eloquent ORM을 데이터베이스 추상화 계층으로 사용하므로 이를 확장하여 모델 classJeyac을 생성할 수 있습니다. 데이터베이스 구성은 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