接上篇 构造一个仿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函数打印出来了。