在咱們平常使用Laravel框架中,有不少值得咱們學習的設計理念和開發思想,如何代碼變得更加「優雅」,核心架構中組件化、服務容器、數據庫ORM 都是很值得咱們去探究一二的方向。php
在本系列博客中,將利用 Laravel 中組件化的特色來構建一個迷你 仿 Laravel 的 MVC框架。html
本篇的應用主要是講述,如何利用 illuminate/routing 來實現框架的路由模塊,經過配置的定義來實現請求的轉發和跳轉。nginx
首先建立一個項目,名稱隨便定義,我這裏採用的是 laramvclaravel
mkdir laramvc
而後建立一個 composer.json 文件數據庫
填充內容以下:json
{ "name": "你的項目名稱", "authors": [{ "name": "做者名稱", "email": "做者郵箱" }], "require": { } }
執行 composer update 用於生成vendor目錄及自動加載文件。架構
composer update
執行完成後,咱們仿照Laravel在項目下,創建 app 及 public 目錄,用於儲存項目核心業務邏輯及提供對外訪問邏輯。mvc
mkdir app && mkdir public
執行完上述步驟後,咱們開始添加路由組件 illuminate/routing,可是該組件又依賴到了另外一個組件 illuminate/events 組件,因此咱們須要將這兩個組件一塊兒引入進來。app
執行 composer 操做以下: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 文件內容以下:
<?php use 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來進行配置。
完成上述步驟後,添加一下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 組件化的優點就能夠輕鬆的定製出一個