xiangyu2038 / fly_sky_framework
一个框架核心部分
Installs: 17
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
Type:l
Requires
- php: >=7.0
- illuminate/config: ^5.8
- illuminate/container: ^5.7
- illuminate/events: ^5.8
- symfony/event-dispatcher: ^4.2
- symfony/finder: ^4.3
- symfony/http-foundation: ^4.2
- symfony/http-kernel: ^4.2
- symfony/routing: v4.0.1
- symfony/var-dumper: ^4.2
README
为了使本框架尽可能简洁,框架本身仅仅只提供IOC容器($container) HTTP请求模块($request) 路由分发模块($routes) 事件($dispatcher) ,其他例如数据库查询,视图模板等可以使用其他框架的优秀模块.例如database使用laravel的Eloquent ORM,view使用laravel的blade模板引擎.本框架兼容laravel的各个模块,只需要用composer安装对应模块,然后在配置文件中添加服务提供者即可.
安装
composer create-project xiangyu2038/flysky
配置
配置文件在app/Config目录下 配置文件示例
////app/Config/config.php <?php return ['test'=>'test'];
获取配置文件代码如下
<?php use XiangYu2038\FlySky\FlySKy; $config = FlySKy::getContainer()->make('config') -> get('config.test');
其中config 为配置文件名称,test为配置文件的键
路由
路由配置文件在app/Routes目录下 示例代码如下
<?php // 路由配置文件 use Symfony\Component\Routing; $routes = new Routing\RouteCollection(); $routes->add('test', new Routing\Route('/test/{hello}', array( 'year' => null, '_controller' => 'App\Http\TestController::index', ))); return $routes;
控制器
控制器在app/Http目录下 示例代码如下
<?php namespace App\Http; use Symfony\Component\HttpFoundation\Request; class TestController { public function index(Request $request) { return 'test'; } }
$request 为当前请求对象
事件
框架的事件采用的是laravel的事件模块,所以和laravel的使用方法一致
事件目录在app/Events
事件编写示例
<?php ///app/Events/test.php namespace App\Events; class Test { public $order; /** * 创建一个事件实例。 * * @return void */ public function __construct() { } }
创建监听者 目录在app/Listeners 示例
<?php ///////app/Listeners/test.php namespace App\Listeners; class Test { public function __construct() { // } public function handle($event) { //......各种实现 } }
创建完事件和监听者后 需要在事件提供者中配置事件和对应的监听者 示例
<?php ///////app/Providers/EventServiceProvider.php namespace App\Providers; use App\Events\Test; use XiangYu2038\FlySky\Listeners\KernelView; use XiangYu2038\FlySky\providers\EventServiceProvider as EventService; use XiangYu2038\FlySky\Listeners\KernelException; use XiangYu2038\FlySky\Listeners\KernelRequest; use XiangYu2038\FlySky\Listeners\KernelFinishRequest; class EventServiceProvider extends EventService { protected $dispatcher;/// /** * 事件监听 * * @var array */ protected $listen = [ 'kernel.request' => [ KernelRequest::class, ], 'kernel.finish_request' => [ KernelFinishRequest::class, ], 'kernel.exception' => [ KernelException::class, ], 'kernel.view' => [ KernelView::class, ], Test::class => [ \App\Listeners\Test::class ] ]; /** * Register any events for your application. * * @return void */ public function boot() { parent::boot(); } public function register(){ parent::register(); } } ///////app/Exceptions/Exceptions.php
框架本身已定义好四种事件 分别是kernel.request,kernel.finish_request,kernel.exception,kernel.view四个事件,您可以根据自己的需求改写这些事件
异常处理
当程序发生异常时,会触发kernel.exception事件,最终会把异常抛给Exception进行处理,用户可以根据自己抛出异常的类型进行相应的处理 示例
<?php namespace App\Exceptions; use Symfony\Component\Debug\Exception\FlattenException; class Exception { public function __construct() { // } public function handle(FlattenException $exception) { dd($exception); //......各种实现 } }
服务提供者
集成第三方服务(尤其是laravel的服务) 可以使用服务提供者 目录在app/Config/provider 示例
<?php ////app/Config/provider/provider.php ////服务提供者 return [ Illuminate\Events\EventServiceProvider::class, ///////// App\Providers\EventServiceProvider::class,//事件提供者 XiangYu2038\FlySky\providers\RouterServiceProvider::class,///路由监听提供者 ///////第三方组件 可按需注册 Illuminate\Filesystem\FilesystemServiceProvider::class,//文件引擎 Illuminate\View\ViewServiceProvider::class,///模板引擎 Illuminate\Database\DatabaseServiceProvider::class,//数据库引擎 ///////第三方组件 ];
数据库查询
本框架没有集成数据库查询功能,用户可以根据个人喜好选择第三方用的顺手的数据库查询功能 本示例将演示如何安装laravel的Eloquent ORM模型进行查询 首先 安装Eloquent ORM模块
composer require illuminate/database
增加服务提供者 在服务提供者种增加配置
<?php [ //// Illuminate\Database\DatabaseServiceProvider::class ///// ];//数据库引擎
增加对应的数据库配置文件 database.php 此配置文件直接从laravel中复制过来即可
大功告成 现在可以使用laravel的ORM了
视图
同样没有集成视图 本示例将演示如何安装laravel的blade模板引擎. 安装
composer require illuminate/view
增加服务提供者 在服务提供者种增加配置
<?php [ //// Illuminate\View\ViewServiceProvider::class,///模板引擎 ///// ];
增加对应的数据库配置文件 view.php 此配置文件直接从laravel中复制过来即可
大功告成 现在可以使用laravel的blade模板引擎了