在咱们日常应用Laravel框架中,有很多值得咱们学习的设计理念和开发思维,如何代码变得更加“优雅”,外围架构中组件化、服务容器、数据库ORM 都是很值得咱们去探索一二的方向。
在本系列博客中,将利用 Laravel 中组件化的特点来构建一个迷你 仿 Laravel 的 MVC框架。
本篇的利用次要是讲述,如何利用 illuminate/routing 来实现框架的路由模块,通过配置的定义来实现申请的转发和跳转。
1.初始化一个新我的项目
首先创立一个我的项目,名称轻易定义,我这里采纳的是 laramvc
mkdir laramvc
而后创立一个 composer.json 文件
填充内容如下:
{ "name": "你的项目名称", "authors": [{ "name": "作者名称", "email": "作者邮箱" }], "require": { }}
执行 composer update 用于生成vendor目录及主动加载文件。
composer update
执行实现后,咱们仿照Laravel在我的项目下,建设 app 及 public 目录,用于贮存我的项目外围业务逻辑及提供对外拜访逻辑。
mkdir app && mkdir public
2.增加路由组件
执行完上述步骤后,咱们开始增加路由组件 illuminate/routing,然而该组件又依赖到了另一个组件 illuminate/events 组件,所以咱们须要将这两个组件一起引入进来。
执行 composer 操作如下:
composer require "illuminate/events":"*"composer require "illuminate/routing":"*"
引入实现后,咱们参照laravel建设路由定义文件 app/Http/routes/routers.php
<?php$app['router']->get('/', function () { echo '欢送拜访 laramvc';});
定义好路由后,持续参照laravel建设内部拜访路口文件 public/index.php
index.php 文件内容如下:
<?phpuse Illuminate\Container\Container;use Illuminate\Events\EventServiceProvider;use Illuminate\Http\Request;use Illuminate\Routing\RoutingServiceProvider;//首页入口//调用主动加载文件require __DIR__ . '/../vendor/autoload.php';//实例化服务容器,对事件服务提供者及路由服务提供者进行注册$app = new Container;with(new EventServiceProvider($app))->register();with(new RoutingServiceProvider($app))->register();//加载路由配置require __DIR__ . './../app/Http/routes/routers.php';//实例化申请并散发解决申请$request = Request::createFromGlobals();$response = $app['router']->dispatch($request);//返回响应申请$response->send();
编写实现后,就能够测试运行了,运行本篇案例中采纳的是nginx来进行配置。
3.nginx 部署运行
实现上述步骤后,增加一下nginx配置,而后重启nginx即可部署胜利。
server { listen 80; //端口 server_name localhost; //域名 root /data/www/laramvc/public/; //我的项目门路 location / { try_files $uri $uri/ /index.php?$query_string; if (!-e $request_filename){ rewrite ^/(.*) /index.php last; } index index.html index.htm index.php; include /usr/local/etc/nginx/conf.d/php-fpm; } }
运行胜利的成果如下,这样就利用 laravel 组件化的劣势就能够轻松的定制出一个