您的位置:首页 > 编程语言 > PHP开发

lumen 进阶序

2017-02-14 20:19 357 查看
lumen 是一个由 Laravel 组件搭建而成的微框架,是当前最快的 PHP 框架之一! 

Lumen
专为微服务或者 API 设计,对 Laravel 优化了框架的加载机制, 所以 Lumen 对资源的要求少很多,速度也比laravel快很多; 因师承Laravel,所以Lumen
向 Laravel 迁移是很容易的事情。 Lumen目前是1.0 版本,基于 Laravel 5.x 开发。(Lumen
没有使用 Symfony 的路由模块, 而是采用了速度更加快的 nikic/fast-route。)


Lumen 包含的功能

Blade 模版引擎

Caching 缓存系统

Command Scheduler 计划任务

Controllers 控制器

Eloquent ORM 数据库操作

Error Handling 错误处理

Database Abstraction 数据库抽象层

Dependency Injection 依赖注入

Logging 日志系统

Queued Jobs 队列系统

导读:

1. 入口文件、启动文件和配置文件: 

public/index.php。里面只有两行代码:

$app = require __DIR__.'/../bootstrap/app.php';

$app->run();

2. 路由定义

在 bootstrap/app.php 中,最后两行代码是:

require __DIR__ . '/../app/Http/routes.php';

return $app;

3. Facades 提供一个静态接口给在应用程序的服务容器中可以取用的类. 

这个功能默认是没有开启的。开启方式是去掉 bootstrap/app.php 中 $app->withFacades(); 的注释。

当然,如果不开启,也不碍事:

use Illuminate\Support\Facades\Cache;

use Illuminate\Support\Facades\DB;

Cache::put('key', 'value', $minutes);

DB::getQueryLog();

public function withFacades()

{

    Facade::setFacadeApplication($this);

    if (! static::$aliasesRegistered) {

        static::$aliasesRegistered = true;

        class_alias('Illuminate\Support\Facades\App', 'App');

        class_alias('Illuminate\Support\Facades\Auth', 'Auth');

        class_alias('Illuminate\Support\Facades\Bus', 'Bus');

        class_alias('Illuminate\Support\Facades\DB', 'DB');

        class_alias('Illuminate\Support\Facades\Cache', 'Cache');

        class_alias('Illuminate\Support\Facades\Cookie', 'Cookie');

        class_alias('Illuminate\Support\Facades\Crypt', 'Crypt');

        class_alias('Illuminate\Support\Facades\Event', 'Event');

        class_alias('Illuminate\Support\Facades\Hash', 'Hash');

        class_alias('Illuminate\Support\Facades\Log', 'Log');

        class_alias('Illuminate\Support\Facades\Mail', 'Mail');

        class_alias('Illuminate\Support\Facades\Queue', 'Queue');

        class_alias('Illuminate\Support\Facades\Request', 'Request');

        class_alias('Illuminate\Support\Facades\Schema', 'Schema');

        class_alias('Illuminate\Support\Facades\Session', 'Session');

        class_alias('Illuminate\Support\Facades\Storage', 'Storage');

        class_alias('Illuminate\Support\Facades\Validator', 'Validator');

    }

}

4. 数据库和 Eloquent

数据库相关配置信息在 .env 文件里面, DB_* 开头。 你可以定义所有的数据库连接。目前 Lumen 支持四种数据库系统:MySQL、Postgres、SQLite、以及 SQL Server。

数据库和 Eloquent ORM 和 Laravel 中的用法一样,看 Laravel 的相关文档即可。

数据库操作日志默认是关闭的,启动方式:

DB::connection()->enableQueryLog();

5. Session

Session 默认未开启。

开启方式:去掉 bootstrap/app.php 中 $app->middleware(); 的 StartSession 中间件的注释。

使用时发生错误:Class 'Memcached' not found ,因为在 .env 文件中,Session 的默认驱动是:memcached。修改即可。

目前支持的驱动有:file、cookie、database、memcached、redis、array。详情参见:会话。

对了,说一句,重定向的功能有依赖于 Session。

6. Cookie

如果你想让所有的 Cookie 都加密的话, 你需要把 bootstrap/app.php 的 EncryptCookies 中间件去掉注释. Lumen 所建立的 cookie 会加密并且加上认证记号,这代表着被用户擅自更改的 cookie 会失效。

一般使用 cookie 都是伴着 Response 对象返回给客户端的:

$response->withCookie(cookie('name', 'value', $minutes));

return $response;

如果不喜欢上面那种方式,还有另外一种:

Cookie::queue('name', 'value');

return $response;

但是:

你需要在 bootstrap/app.php 文件里面注释掉 AddQueuedCookiesToResponse 这一行来使用此功能.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lumen laravel