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 队列系统
导读:
- 入口文件、启动文件和配置文件:
public/index.php。里面只有两行代码:
$app = require __DIR__.'/../bootstrap/app.php';
$app->run();
- 路由定义
在 bootstrap/app.php 中,最后两行代码是:
require __DIR__ . '/../app/Http/routes.php';
return $app;
- 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');
}
}
- 数据库和 Eloquent
数据库相关配置信息在 .env 文件里面, DB_* 开头。 你可以定义所有的数据库连接。目前 Lumen 支持四种数据库系统:MySQL、Postgres、SQLite、以及 SQL Server。
数据库和 Eloquent ORM 和 Laravel 中的用法一样,看 Laravel 的相关文档即可。
数据库操作日志默认是关闭的,启动方式:
DB::connection()->enableQueryLog();
- Session
Session 默认未开启。
开启方式:去掉 bootstrap/app.php 中 $app->middleware(); 的 StartSession 中间件的注释。
使用时发生错误:Class 'Memcached' not found ,因为在 .env 文件中,Session 的默认驱动是:memcached。修改即可。
目前支持的驱动有:file、cookie、database、memcached、redis、array。详情参见:会话。
对了,说一句,重定向的功能有依赖于 Session。
- 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