xsanisty/silexstarter

基于Silex框架的启动应用程序

dev-master 2017-02-20 03:38 UTC

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) [Scrutinizer代码质量] (https://scrutinizer-ci.com/g/xsanisty/SilexStarter/?branch=develop) [代码覆盖率] (https://scrutinizer-ci.com/g/xsanisty/SilexStarter/?branch=develop) [SensioLabsInsight] (https://insight.sensiolabs.com/projects/a30a66f9-8110-40c5-8a35-f3c1697dde55)

screenshot

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/*

控制器基本上可以是任何位于控制器文件夹中的类,当启用时,它将作为服务注册,并在需要时正确实例化,并注入所有依赖项。

假设我们有PostRepositoryCommentRepository,我们应首先注册它们,然后才能将它们正确地注入到控制器中。

文件: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

菜单

资产