lumen 进阶序

lumen 是一个由 Laravel 组件搭建而成的微框架,是当前最快的 PHP 框架之一! 

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

Lumen 包含的功能

  1. Blade 模版引擎

  2. Caching 缓存系统

  3. Command Scheduler 计划任务

  4. Controllers 控制器

  5. Eloquent ORM 数据库操作

  6. Error Handling 错误处理

  7. Database Abstraction 数据库抽象层

  8. Dependency Injection 依赖注入

  9. Logging 日志系统

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值