接上篇 结构一个仿Laravel Mvc框架 - 路由篇,本章接着叙述,如何构建框架中的 Model层(模型)。
上一篇中的案例都是将代码写在路由闭包中的,如果路由定义的多了,十分不好保护和治理.所以咱们首先须要实现一个 Controller 来解决咱们的业务逻辑,也就是Mvc中的C层。
建设控制器
首先参考Laravel目录架构,创立好咱们的控制器文件
mkdir App/Http/Controllers/IndexController
IndexController创立实现后,编写相干的函数来解决首页的逻辑.
<?phpnamespace 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-autoload
{ "name": "17ns/laramvc", "authors": [{ "name": "17ns", "email": "aa@bb.com" }], "require": { "illuminate/routing": "*", "illuminate/events": "*" }, "autoload": { "psr-4": { "App\\": "app/" } }}
增加模型组件
下面步骤实现实现后,就开始增加 illuminate/database 这个组件,来实现像Laravel一样的弱小的ORM。
执行上面的命令开始引入组件
composer require "illuminate/database":"*"
引入实现后,就开始欠缺数据库的配置,这里仍然参照laravel建设一个 config/database.php 文件,来作为数据库连贯的配置文件,建设实现后,开始填写本地货远端服务器的MYSQL配置信息。
<?phpreturn [ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'laramvc', 'username' => 'root', 'password' => 'localdb001', 'charset' => 'utf8', 'collation' => 'utf8_general_ci', 'prefix' => '',];
配置实现后,就须要在首页入口文件启动 Eloquent ORM,相干代码如下:
<?phpuse 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
下面的步骤无误后,开始建设Model文件,这边仍然参考Laravel中,建设一个 App/User.php
<?phpnamespace App;use Illuminate\Database\Eloquent\Model;class User extends Model{ protected $timestamp = false;}
Model创立实现后,开始引入到咱们的控制器中应用
<?phpnamespace App\Http\Controllers;use App\User;class IndexController{ public function index() { dd(User::find(1)); return '胜利拜访首页,这里是IndexController'; }}
咱们将users表中的id为1的用户进行查找,而后就通过dd函数打印进去了。