lumen 框架中文文档 Word版本

更新时间:2024-06-08 15:27:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

LUMEN

jiangliqing

MICROSOFTchina.suzhou

介绍.................................................................................................................................................................... 6

什么是 Lumen? ................................................................................................................................................................. 6 在什么时候使用 Lumen? ................................................................................................................................................. 6 Lumen 的限制 ................................................................................................................................................................... 6 Lumen 包含了哪些 Laravel 的功能 ............................................................................................................................. 7

安装.................................................................................................................................................................... 8

安装 Composer ................................................................................................................................................................. 8 安装 Lumen ....................................................................................................................................................................... 8 环境需求 ........................................................................................................................................................................... 8 配置信息 ........................................................................................................................................................................... 9 优雅链接 ........................................................................................................................................................................... 9

配置.................................................................................................................................................................. 10

介绍 ................................................................................................................................................................................. 10 安装后的配置 ................................................................................................................................................................. 10 配置文件 ......................................................................................................................................................................... 10 优雅链接 ......................................................................................................................................................................... 11

HTTP 路由........................................................................................................................................................ 12

基础路由 ......................................................................................................................................................................... 12 路由参数 ......................................................................................................................................................................... 13 命名路由 ......................................................................................................................................................................... 13 路由群组 ......................................................................................................................................................................... 13 CSRF 保护 ....................................................................................................................................................................... 14 请求方法欺骗 ................................................................................................................................................................. 15 抛出 404 错误 ............................................................................................................................................................... 16

HTTP 中间件.................................................................................................................................................... 17

简介 ................................................................................................................................................................................. 17 建立中间件 ..................................................................................................................................................................... 17 注册中间件 ..................................................................................................................................................................... 19 可终止中间件 ................................................................................................................................................................. 19

HTTP 控制器.................................................................................................................................................... 21

介绍 ................................................................................................................................................................................. 21 基础控制器 ..................................................................................................................................................................... 21

1 控制器中间件 ................................................................................................................................................................. 22 依赖注入和控制器 ......................................................................................................................................................... 22

HTTP 请求........................................................................................................................................................ 25

获取请求实例 ................................................................................................................................................................. 25 取得输入数据 ................................................................................................................................................................. 26 旧输入数据 ..................................................................................................................................................................... 27 Cookies ........................................................................................................................................................................... 28 上传文件 ......................................................................................................................................................................... 29 其他的请求信息 ............................................................................................................................................................. 30

HTTP 响应........................................................................................................................................................ 31

基础响应 ......................................................................................................................................................................... 31 重定向 ............................................................................................................................................................................. 31 其他响应 ......................................................................................................................................................................... 33

视图 (View).................................................................................................................................................... 34

基本用法 ......................................................................................................................................................................... 34 服务提供者...................................................................................................................................................... 36

简介 ................................................................................................................................................................................. 36 基本提供者例子 ............................................................................................................................................................. 36 注册提供者 ..................................................................................................................................................................... 37 服务容器.......................................................................................................................................................... 38

介绍 ................................................................................................................................................................................. 38 基本用法 ......................................................................................................................................................................... 38 将接口绑定到实现 ......................................................................................................................................................... 40 上下文绑定 ..................................................................................................................................................................... 40 标签 ................................................................................................................................................................................. 40 容器事件 ......................................................................................................................................................................... 41 缓存.................................................................................................................................................................. 42

配置 ................................................................................................................................................................................. 42

基础使用 ......................................................................................................................................................................... 42

数据库使用基础.............................................................................................................................................. 44

配置 ................................................................................................................................................................................. 44 基础使用 ......................................................................................................................................................................... 44 Migrations ..................................................................................................................................................................... 45

2 加密.................................................................................................................................................................. 46

介绍 ................................................................................................................................................................................. 46 基本用法 ......................................................................................................................................................................... 46 错误和记录...................................................................................................................................................... 47

配置 ................................................................................................................................................................................. 47

错误处理 ......................................................................................................................................................................... 47 HTTP 异常 ....................................................................................................................................................................... 48 日志 ................................................................................................................................................................................. 48 事件.................................................................................................................................................................. 50

基本用法 ......................................................................................................................................................................... 50

事件处理队列 ................................................................................................................................................................. 51

文件系统 / 云存储........................................................................................................................................ 53

简介 ................................................................................................................................................................................. 53 配置文件 ......................................................................................................................................................................... 53 基本用法 ......................................................................................................................................................................... 53 辅助方法.......................................................................................................................................................... 56

数组 ................................................................................................................................................................................. 56 路径 ................................................................................................................................................................................. 60 字串 ................................................................................................................................................................................. 60 网址 ................................................................................................................................................................................. 63 其他 ................................................................................................................................................................................. 64 分页.................................................................................................................................................................. 65

配置 ................................................................................................................................................................................. 65 使用 ................................................................................................................................................................................. 65

追加分页链接 ................................................................................................................................................................. 66 转换至 JSON ................................................................................................................................................................... 67

Queues.............................................................................................................................................................. 68

设置 ................................................................................................................................................................................. 68 基本用法 ......................................................................................................................................................................... 69 更多调度的方法 ............................................................................................................................................................. 71 Queueing Closures ....................................................................................................................................................... 71 执行一个队列监听 ......................................................................................................................................................... 72 常驻队列处理器 ............................................................................................................................................................. 73 已失败的工作 ................................................................................................................................................................. 74

会话.................................................................................................................................................................. 76

配置 ................................................................................................................................................................................. 76

3 使用 ................................................................................................................................................................................. 76 暂存数据(Flash Data) ............................................................................................................................................. 78 数据库 Sessions ........................................................................................................................................................... 78 Session 驱动 ................................................................................................................................................................. 78

Templates........................................................................................................................................................ 79

Blade 模板 ..................................................................................................................................................................... 79 其他 Blade 控制语法结构 ........................................................................................................................................... 80

测试.................................................................................................................................................................. 83

介绍 ................................................................................................................................................................................. 83 定义并执行测试 ............................................................................................................................................................. 83 测试环境 ......................................................................................................................................................................... 83 从测试调用路由 ............................................................................................................................................................. 84 模拟 Facades ................................................................................................................................................................. 84 框架 Assertions ........................................................................................................................................................... 85 辅助方法 ......................................................................................................................................................................... 87 重置应用程序 ................................................................................................................................................................. 87

表单验证.......................................................................................................................................................... 88

基本用法 ......................................................................................................................................................................... 88 路由 / 控制器验证 ....................................................................................................................................................... 90 使用错误信息 ................................................................................................................................................................. 92 错误信息&视图 ............................................................................................................................................................... 94 可用验证规则 ................................................................................................................................................................. 95 添加条件验证规则 ....................................................................................................................................................... 101 自定义错误信息 ........................................................................................................................................................... 103 自定义验证规则 ........................................................................................................................................................... 105

4

5 介绍

什么是 Lumen?

Lumen 是一个由 Laravel 元件搭建而成的微框架, 由 Laravel 官方维护. Lumen 为速度而生, 是当前最快的 PHP 框架之一, 甚至比类似的微框架 Silex 速度还要快.

Lumen 比其他微框架的优点是, 构建在 Laravel 之上, 使其具备 Laravel 强大的功能, 如 路由, 依赖注入, Eloquent ORM, 数据库迁移管理, 队列和计划任务等.

Laravel 本来就是一个功能齐全, 速度飞快的框架, 但是 Lumen 因为去除了很多 Laravel 的配置和可自定义的选项, 速度越加飞快, 毫秒必争.

飞快的速度, 再加上 Laravel 非常方便的功能, 使用 Lumen 开发应用会是非常愉悦的体验.

在什么时候使用 Lumen?

Lumen 专为微服务或者 API 设计, 举个例子, 如果你的应用里面有部分业务逻辑的请求频率比较高, 就可以单独把这部分业务逻辑拿出来, 使用 Lumen 来构建一个小 App.

因为 Lumen 是对 Laravel 优化了框架的加载机制, 所以 Lumen 对资源的要求少很多.

当然, 你可以使用 队列系统 与你的主 Laravel 应用进行交互. Laravel 和 Lumen 从一开始就是设计成能一起很好的工作, 并且, 配合使用, 允许你构架一个强大的, 以微服务为驱动的应用程序.

Lumen 同时也非常适用于构建 API 接口, 此类型的应用通常情况下不需要具备 全栈框架 的所有功能, 如 HTTP 会话管理, Cookies, 和模版系统.

Lumen 的限制

因为对框架的加载进行了优化, 去除灵活性来换取速度, 所以 Lumen 的可自定义性不是很强, 一些专为 Laravel 开发的扩展包可能无法使用, 如开发者工具条, CMS 系统等.

Lumen 没有使用 Symfony 的路由模块, 而是采用了速度更加快的 nikic/fast-route. 如果你需要使用 Symfony 的路由功能, 如 子域名等高级路由功能, Lumen 可能不适合你, 建议使用功能更加齐全的 Laravel.

如果你真的选择了全栈框架, 请放心使用, 构建在 Laravel 上的应用程序能处理每天 15,000,000 以上的请求, 没什么可担忧的.

6 Lumen 包含了哪些 Laravel 的功能

Lumen 包含了大部分的 Laravel 全栈框架的功能:

? Blade 模版引擎 ? Caching 缓存系统

? Command Scheduler 计划任务 ? Controllers 控制器

? Eloquent ORM 数据库操作 ? Error Handling 错误处理

? Database Abstraction 数据库抽象层 ? Dependency Injection 依赖注入 ? Logging 日志系统

?

Queued Jobs 队列系统

Lumen 独特的初始化机制, 使其在功能强大的同时, 具备了高性能, 是构建微服务架构应用的绝佳方案. 请随意查阅各个功能对应的文档.

7 安装

安装 Composer

Lumen 使用 Composer 来管理依赖扩展包, 所以, 在使用 Lumen 之前, 你需要先安装 Composer.

安装 Lumen

通过 Lumen 命令安装

首先, 使用下面命令下载 Lumen 命令:

composer globalrequire\

请确定把 ~/.composer/vendor/bin 路径放置于您的 PATH 里, 这样 Lumen 执行文件就会存在你的系统。 一旦安装完成后,就可以使用 lumen new 命令建立一份全新安装的 Lumen 应用,例如:laravel new service 将会在当前目录下建立一个名为 service 的目录, 此目录里面存放着全新安装的 Lumen 相关代码,此方法跟其他方法不一样的地方在于会提前安装好所有相关代码,不需要再通过 composer install 安装相关依赖,速度会快许多。

lumen newservice

通过 Composer 创建项目命令

你一样可以通过 Composer 在命令行执行 create-project 来安装 Lumen:

composer create-project laravel/lumen --prefer-dist

环境需求

Lumen 框架有一些系统上的需求:

? ? ? ? ?

PHP >= 5.4

Mcrypt PHP 扩展 OpenSSL PHP 扩展 Mbstring PHP 扩展 Tokenizer PHP 扩展

8 配置信息

Lumen 几乎不需多余的配置就可以马上使用。你可以马上着手开发!然而,你可以查看其他的文档, 如下:

? ? ? ? 缓存 数据库 队列 会话 权限

Lumen 框架有一个目录需要额外配置权限: storage 目录要让服务器有写入的权限。

优雅链接 Apache

Lumen 框架通过 public/.htaccess 文件来让网址中不需要 index.php。如果你的网页服务器是使用 Apache 的话,请确认是否有开启 mod_rewrite 模块。

假设 Laravel 附带的 .htaccess 文件在 Apache 无法生效的话,请尝试下面的方法:

Options +FollowSymLinks RewriteEngine On

RewriteCond %{REQUEST_FILENAME}!-d RewriteCond %{REQUEST_FILENAME}!-f RewriteRule ^ index.php [L]

Nginx

Nginx 上,在配置中增加下面的配置,就可以使用「优雅链接」了:

location /{

try_files $uri$uri//index.php?$query_string;

}

当然,如果你使用 Homestead 的话,优雅链接会自动的帮你配置完成。

9

}

如你所见,除了定义 handle 方法之外, TerminableMiddleware 定义一个 terminate 方法。这个方法接收请求和响应。一旦定义了 terminable 中间件,你需要将它增加到 HTTP kernel 文件的全局中间件清单列表中。

20 HTTP 控制器

介绍

除了在单一的 routes.php 文件中定义所有的请求处理逻辑之外,你可能希望使用控制器类来组织此行为。控制器可将相关的 HTTP 请求处理逻辑组成一个类。控制器通常存放在app/Http/Controllers 此目录中。

基础控制器

这里是一个基础控制器类的例子:

useApp\\User;

useApp\\Http\\Controllers\\Controller;

classUserControllerextendsController{ /**

* Show the profile for the given user. *

* @param int $id * @return Response */

publicfunctionshowProfile($id) {

returnview('user.profile',['user'=>User::findOrFail($id)]); } }

我们可以通过如下方式引导路由至对应的控制器动作:

$app->get('user/{id}','UserController@showProfile');

Note: 所有的控制器都应该扩展 App\\Http\\Controllers\\Controller 基础控制器类. 控制器和命名空间

和闭包路由一样,你也可以指定控制器路由的名称。

$app->get('foo',['uses'=>'FooController@method','as'=>'name']);

21 命名路由可以用以下方法来生成 URL :

$url=route('name');

带参数的命名路由:

$url=route('name',['id'=>1]);

控制器中间件

中间件 可在控制器路由中指定,例如:

$app->get('profile',[ 'middleware'=>'auth',

'uses'=>'UserController@showProfile' ]);

你也可以在控制器构造器中指定中间件 :

classUserControllerextendsController{ /**

* Instantiate a new UserController instance. */

publicfunction__construct() {

$this->middleware('auth');

$this->middleware('log',['only'=>['fooAction','barAction']]);

$this->middleware('subscribed',['except'=>['fooAction','barAction']]); } }

依赖注入和控制器

构造器注入

Lumen / Laravel 服务容器 用于解析所有的 Laravel 控制器。因此,你可以在控制器所需要的构造器中,对依赖作任何的类型限制。

useApp\\Http\\Controllers\\Controller; useApp\\Repositories\\UserRepository;

22 classUserControllerextendsController{ /**

* The user repository instance. */

protected$users; /**

* Create a new controller instance. *

* @param UserRepository $users * @return void */

publicfunction__construct(UserRepository $users) {

$this->users=$users; } }

方法注入

除了建构器注入外,你也可以对控制器方法的依赖作类型限制。例如,让我们对某个方法的Request 实例作类型限制:

useIlluminate\\Http\\Request;

useApp\\Http\\Controllers\\Controller;

classUserControllerextendsController{ /**

* 保存用户. *

* @param Request $request * @return Response */

publicfunctionstore(Request $request) {

$name=$request->input('name'); // } }

23 如果你的控制器方法预期由路由参数取得输入,只要在其他的依赖之后列出路由参数即可:

useIlluminate\\Http\\Request;

useApp\\Http\\Controllers\\Controller;

classUserControllerextendsController{ /**

* 保存用户. *

* @param Request $request * @param int $id * @return Response */

publicfunctionupdate(Request $request,$id) { // } }

24

本文来源:https://www.bwwdw.com/article/2o56.html

Top