乐趣区

关于laravel:构造一个仿Laravel-Mvc框架-模型Model

接上篇 结构一个仿 Laravel Mvc 框架 – 路由篇, 本章接着叙述, 如何构建框架中的 Model 层 (模型)。

上一篇中的案例都是将代码写在路由闭包中的, 如果路由定义的多了, 十分不好保护和治理. 所以咱们首先须要实现一个 Controller 来解决咱们的业务逻辑, 也就是 Mvc 中的 C 层。

建设控制器

首先参考 Laravel 目录架构, 创立好咱们的控制器文件

mkdir  App/Http/Controllers/IndexController

IndexController 创立实现后, 编写相干的函数来解决首页的逻辑.

<?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-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 配置信息。

<?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

下面的步骤无误后, 开始建设 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 函数打印进去了。

退出移动版