Write the Code. Change the World.

4月 03

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();
  1. 路由定义
    在 bootstrap/app.php 中,最后两行代码是:
require __DIR__ . '/../app/Http/routes.php';
return $app;
  1. 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');
    }
}

  1. 数据库和 Eloquent
    数据库相关配置信息在 .env 文件里面, DB_* 开头。 你可以定义所有的数据库连接。目前 Lumen 支持四种数据库系统:MySQL、Postgres、SQLite、以及 SQL Server。
    数据库和 Eloquent ORM 和 Laravel 中的用法一样,看 Laravel 的相关文档即可。

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

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

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

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

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

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

  1. 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 这一行来使用此功能.

文章来源:https://blog.csdn.net/yyt8yyt8/article/details/55105589

lumen 使用 redis: https://blog.csdn.net/Dennis_ukagaka/article/details/76849573

时区问题:https://blog.csdn.net/butiehua/article/details/51557903

autoload: https://blog.csdn.net/yyt8yyt8/article/details/55251279

发表评论

电子邮件地址不会被公开。 必填项已用*标注