xsanisty/silexstarter
基于Silex框架的启动应用程序
Requires
- xsanisty/silexstarter-core: dev-develop
- xsanisty/silexstarter-dashboard: dev-develop
- xsanisty/silexstarter-datatable: dev-develop
- xsanisty/silexstarter-modulemanager: dev-develop
- xsanisty/silexstarter-usermanager: dev-develop
Requires (Dev)
- filp/whoops: ~2.0
- phpunit/phpunit: 4.*
- silex/web-profiler: ~1.0
- symfony/var-dumper: *
This package is not auto-updated.
Last update: 2024-09-28 17:49:05 UTC
README
[] (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
SilexStarter是一个基于Silex框架、Laravel的Eloquent、Cartalyst Sentry以及一些第三方和内置组件构建的启动应用程序。SilexStarter旨在帮助快速构建简单的应用程序,它采用MVC和模块化方法构建,并附带一些基本的行政模块,包括用户管理和模块管理。
安装
目前,可安装的分支只有develop分支,您可以使用以下命令轻松使用composer安装
composer create-project xsanisty/silexstarter target_dir dev-develop -s dev
一旦composer安装完成,您可以使用以下命令初始化应用程序
$cd target_dir
$./xpress app:init
模块可以直接在app/modules
目录中开发,并为它创建自己的命名空间,或者将其构建为独立的composer包,模块可以通过在app/config/modules.php
中注册来启用或禁用
路由
文件: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');
控制器
文件:app/controllers/*
控制器基本上可以是任何位于控制器文件夹中的类,当启用时,它将作为服务注册,并在需要时正确实例化,并注入所有依赖项。
假设我们有PostRepository
和CommentRepository
,我们应首先注册它们,然后才能将它们正确地注入到控制器中。
文件: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) { } }
文件:app/config/services.php
<?php return [ 'common' => [ 'RepositoryServiceProvider', ] ]
文件: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');
模型
文件:app/models/*
SilexStarter 使用 Eloquent ORM 作为数据库抽象层,因此您可以扩展它来创建模型类 Jeyac。数据库配置可以在 app/config/database.php
文件中找到。
<?php class Post extends Model{ protected $table = 'posts'; public function comments(){ return $this->hasMany('Comment'); } }
视图
文件:app/views/*
中间件
文件:app/middlewares.php
服务提供者
文件:src/Providers/*
模块
文件:app/modules/*
注册模块
文件:app/config/modules.php
模块提供者
文件:app/modules/**/ModuleProvider.php