接上篇 構造一個仿Laravel Mvc框架 - 路由篇,本章接着敘述,如何構建框架中的 Model層(模型)。php
上一篇中的案例都是將代碼寫在路由閉包中的,若是路由定義的多了,很是很差維護和管理.因此咱們首先須要實現一個 Controller 來處理咱們的業務邏輯,也就是Mvc中的C層。mysql
首先參考Laravel目錄架構,建立好咱們的控制器文件laravel
mkdir App/Http/Controllers/IndexController
IndexController建立完成後,編寫相關的函數來處理首頁的邏輯.sql
<?php namespace App\Http\Controllers; class IndexController { public function index() { return '成功訪問首頁,這裏是IndexController'; } }
更改路由映射到該控制器上,修改routers.php數據庫
$app['router']->get('/index', 'App\Http\Controllers\IndexController@index');
最後更改composer.json,配置自動加載路徑,而後再執行 composer dump-autoloadjson
{ "name": "17ns/laramvc", "authors": [{ "name": "17ns", "email": "aa@bb.com" }], "require": { "illuminate/routing": "*", "illuminate/events": "*" }, "autoload": { "psr-4": { "App\\": "app/" } } }
上面步驟實現完成後,就開始添加 illuminate/database 這個組件,來實現像Laravel同樣的強大的ORM。segmentfault
執行下面的命令開始引入組件服務器
composer require "illuminate/database":"*"
引入完成後,就開始完善數據庫的配置,這裏依然參照laravel創建一個 config/database.php 文件,來做爲數據庫鏈接的配置文件,創建完成後,開始填寫本地貨遠端服務器的MYSQL配置信息。閉包
<?php return [ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'laramvc', 'username' => 'root', 'password' => 'localdb001', 'charset' => 'utf8', 'collation' => 'utf8_general_ci', 'prefix' => '', ];
配置完成後,就須要在首頁入口文件啓動 Eloquent ORM,相關代碼以下:架構
<?php use Illuminate\Container\Container; use Illuminate\Events\EventServiceProvider; use Illuminate\Http\Request; use Illuminate\Routing\RoutingServiceProvider; use Illuminate\Database\Capsule\Manager; //首頁入口 //調用自動加載文件 require __DIR__ . '/../vendor/autoload.php'; //實例化服務容器,對事件服務提供者及路由服務提供者進行註冊 $app = new Container; with(new EventServiceProvider($app))->register(); with(new RoutingServiceProvider($app))->register(); //啓動 Eloquent ORM模塊進行配置 $dbManager = new Manager(); $dbManager->addConnection(require '../config/database.php'); $dbManager->bootEloquent(); //加載路由配置 require __DIR__ . './../app/Http/routes/routers.php'; //實例化請求並分發處理請求 $request = Request::createFromGlobals(); $response = $app['router']->dispatch($request); //返回響應請求 $response->send();
上面的DB Manager 會去添加config/database.php的數據庫鏈接,添加完成後,經過
bootEloquent函數啓動 Eloquent ORM。
上面的步驟無誤後,開始創建Model文件,這邊依然參考Laravel中,創建一個 App/User.php
<?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $timestamp = false; }
Model建立完成後,開始引入到咱們的控制器中使用
<?php namespace App\Http\Controllers; use App\User; class IndexController { public function index() { dd(User::find(1)); return '成功訪問首頁,這裏是IndexController'; } }
咱們將users表中的id爲1的用戶進行查找,而後就經過dd函數打印出來了。