
作者:(美)MattStauffer(马特斯托
页数:512
出版社:电子工业出版社
出版日期:2021
ISBN:9787121417573
电子书格式:pdf/epub/txt
内容简介
这是一本实用的Laravel 技术指南,第2 版接近涵盖Laravel 5.8 版本的内容。本书对Laravel 框架进行了系统的介绍,包括Laravel 的背景,Laravel开发环境的搭建,路由与控制器,Blade 模板,数据库和Eloquent,前端组件,收集和处理用户数据,Artisan 和Tinker,用户认证和授权,请求、响应和中间件,容器,测试等知识。通过阅读本书,读者可以比较全面地学习并掌握Laravel 开发的相关理论知识。另外,书中涵盖大量实例,有利于读者在学习理论知识的过程中同步进行实践。
作者简介
Matt Stauffer既是一名开发者,也是一位教师。他是Tighten的合伙人兼技术总监,主办过Five-Minute Geek Show和Laravel Podcast。他的博客地址是http://mattstauffer.com/。
韦玮,重庆韬翔网络科技有限公司创始人兼董事,英国阿伯丁大学人工智能专业研究生(一等荣誉学位),计算机图书畅销书作者,业界资深计算机专家讲师。具有多年IT技术实战开发经验,曾做过程序员、技术总监,目前运营一家专注于中大型软件开发与IT技术服务的公司。《精通Python网络爬虫》《Python程序设计基础实战教程》《Python基础实例教程》作者,《Laravel入门与实战》译者。 有明,开源项目Lawoole发起者,Hyperf 核心成员,SF认证讲师,长期关注新兴技术结合微服务化实现,对技术理论体系有所研究。熟知全栈开发、运维相关技术。《Laravel:艺术家成长之路》系列课程讲师,掘金小册《详解 Laravel 源码中优秀的设计模式》作者,技术书《没什么难的:Docker》作者。
本书特色
适读人群 :本书适合有经验的PHP或C语言开发人员――特别是对那些没有时间来筛选网上众多培训资源的开发者。1. 本书是Laravel经典作品的重磅升级,内容更全面,技术更前沿。
2. 本书不仅包含Laravel理论知识,还配合大量实践案例进行讲解。
目录
第1 章 为什么使用Laravel…………………………………………… 1
为什么要使用框架 ………………………………………………………………………………………….. 1
“自己动手做” ………………………………………………………………………………………….. 1
一致性和灵活性 ………………………………………………………………………………………. 2
Web 和PHP 框架简史 ……………………………………………………………………………………… 2
Ruby on Rails ………………………………………………………………………………………….. 2
PHP 框架的涌入 ………………………………………………………………………………………. 2
CodeIgniter 的优点与缺点 ………………………………………………………………………… 3
Laravel 1、Laravel 2 和Laravel 3 ………………………………………………………………. 3
Laravel 4 ………………………………………………………………………………………………… 3
Laravel 5 ………………………………………………………………………………………………… 4
Laravel 有什么特别之处 ………………………………………………………………………………….. 4
Laravel 的哲学 ………………………………………………………………………………………… 4
Laravel 如何让开发者感到快乐 …………………………………………………………………. 5
Laravel 社区 ……………………………………………………………………………………………. 6
Laravel 是如何工作的 ……………………………………………………………………………………… 6
使用Laravel 的原因 ………………………………………………………………………………………… 9
第2 章 搭建Laravel 的开发环境……………………………………..10
系统要求 ……………………………………………………………………………………………………… 10
Composer …………………………………………………………………………………………………….. 11
本地开发环境 ………………………………………………………………………………………………. 11
Laravel Valet ………………………………………………………………………………………….. 11
Laravel Homestead …………………………………………………………………………………. 12
创建一个新的Laravel 项目 ……………………………………………………………………………. 12
使用Laravel 安装工具来安装Laravel ………………………………………………………. 13
通过Composer 的create-project 特征来安装Laravel ………………………………….. 13
Lambo :超强的“Laravel New”指令 ………………………………………………………. 13
Laravel 的目录结构……………………………………………………………………………………….. 14
文件夹 ………………………………………………………………………………………………….. 14
其他文件 ………………………………………………………………………………………………. 15
配置 ……………………………………………………………………………………………………………. 16
.env 文件 ………………………………………………………………………………………………. 18
启动和运行 ………………………………………………………………………………………………….. 20
测试 ……………………………………………………………………………………………………………. 20
小结 ……………………………………………………………………………………………………………. 21
第3 章 路由和控制器…………………………………………………. 22
对MVC、HTTP 动词和REST 的快速介绍 ………………………………………………………. 22
什么是MVC …………………………………………………………………………………………. 22
HTTP 动词 ……………………………………………………………………………………………. 23
什么是REST …………………………………………………………………………………………. 24
路由定义 ……………………………………………………………………………………………………… 25
路由动词 ………………………………………………………………………………………………. 26
路由处理 ………………………………………………………………………………………………. 27
路由参数 ………………………………………………………………………………………………. 28
路由名称 ………………………………………………………………………………………………. 29
路由组 …………………………………………………………………………………………………………. 31
中间件 ………………………………………………………………………………………………….. 32
路径前缀 ………………………………………………………………………………………………. 34
后备路由 ………………………………………………………………………………………………. 35
子域名路由……………………………………………………………………………………………. 35
命名空间前缀 ………………………………………………………………………………………… 36
名称前缀 ………………………………………………………………………………………………. 36
签名的路由 ………………………………………………………………………………………………….. 37
对路由进行签名 …………………………………………………………………………………….. 37
修改路由以允许签名链接 ……………………………………………………………………….. 38
视图 ……………………………………………………………………………………………………………. 39
直接通过Route::view() 返回简单路由 ………………………………………………………. 40
使用视图Composer 在每个视图中共享变量 ……………………………………………… 40
控制器 …………………………………………………………………………………………………………. 40
获取用户输入 ………………………………………………………………………………………… 43
将依赖注入控制器 …………………………………………………………………………………. 44
资源控制器……………………………………………………………………………………………. 45
API 资源控制器 …………………………………………………………………………………….. 46
单一动作控制器 …………………………………………………………………………………….. 47
路由模型绑定 ………………………………………………………………………………………………. 47
隐式路由模型绑定 …………………………………………………………………………………. 48
自定义路由模型绑定 ………………………………………………………………………………. 49
路由缓存 ……………………………………………………………………………………………………… 49
表单方法欺骗 ………………………………………………………………………………………………. 50
Laravel 中的HTTP 动词 …………………………………………………………………………. 50
在HTML 表单中进行HTTP 方法欺骗 ……………………………………………………… 50
CSRF 保护 …………………………………………………………………………………………………… 51
重定向 …………………………………………………………………………………………………………. 52
redirect()->to() ……………………………………………………………………………………….. 53
redirect()->route() …………………………………………………………………………………… 54
redirect()->back() …………………………………………………………………………………… 54
其他重定向方法 …………………………………………………………………………………….. 54
redirect()->with() ……………………………………………………………………………………. 55
中止请求 ……………………………………………………………………………………………………… 57
自定义Response …………………………………………………………………………………………… 57
response()->make() …………………………………………………………………………………. 57
response()->json() 和->jsonp() …………………………………………………………………. 57
response()->download()、->streamDownload() 和->file() ……………………………. 58
测试 ……………………………………………………………………………………………………………. 58
小结 ……………………………………………………………………………………………………………. 59
第4 章 Blade 模板…………………………………………………… 60
输出数据 ……………………………………………………………………………………………………… 61
控制结构 ……………………………………………………………………………………………………… 61
条件语句 ………………………………………………………………………………………………. 62
循环语句 ………………………………………………………………………………………………. 62
模板继承 ……………………………………………………………………………………………………… 64
用@section/@show 和@yield 定义部分信息 …………………………………………….. 65
包含视图部分 ………………………………………………………………………………………… 67
使用stack ……………………………………………………………………………………………… 69
使用component 和slot ……………………………………………………………………………. 70
视图Composer 和服务注入 ……………………………………………………………………………. 72
用视图Composer 将数据绑定到视图 ………………………………………………………… 73
Blade 服务注入 ……………………………………………………………………………………… 76
自定义Blade 指令 ………………………………………………………………………………………… 77
自定义Blade 指令中的参数 …………………………………………………………………….. 78
示例:对多租户应用程序使用自定义Blade 指令 ………………………………………. 78
更简单的if 语句的自定义指令 ………………………………………………………………… 79
测试 ……………………………………………………………………………………………………………. 80
小结 ……………………………………………………………………………………………………………. 81
第5 章 数据库和Eloquent………………………………………….. 82
配置 ……………………………………………………………………………………………………………. 82
数据库连接……………………………………………………………………………………………. 82
其他数据库配置选项 ………………………………………………………………………………. 84
定义迁移 ………………………………………………………………………………………………. 84
运行迁移 ………………………………………………………………………………………………. 92
填充 ……………………………………………………………………………………………………………. 93
创建填充器……………………………………………………………………………………………. 94
模型工厂 ………………………………………………………………………………………………. 95
查询构造器 ………………………………………………………………………………………………….. 99
DB 外观的基本使用 ……………………………………………………………………………… 100
原始SQL 语句 …………………………………………………………………………………….. 101
查询构造器链 ………………………………………………………………………………………. 102
事务 ……………………………………………………………………………………………………..111
Eloquent 入门 ……………………………………………………………………………………………… 112
新建和定义Eloquent 模型 …………………………………………………………………….. 113
通过Eloquent 获取数据 ………………………………………………………………………… 114
Eloquent 的插入和更新 …………………………………………………………………………. 116
Eloquent 中的删除操作 …………………………………………………………………………. 120
作用域 ………………………………………………………………………………………………… 122
自定义与访问器、修改器和属性转换器的字段交互 …………………………………. 125
Eloquent 集合 ………………………………………………………………………………………. 129
Eloquent 序列化 …………………………………………………………………………………… 131
Eloquent 关系 ………………………………………………………………………………………. 133
通过子类记录更新父类时间戳 ……………………………………………………………….. 146
Eloquent 事件 ……………………………………………………………………………………………… 148
测试 ………………………………………………………………………………………………………….. 149
小结 ………………………………………………………………………………………………………….. 151
第6 章 前端组件……………………………………………………… 152
Laravel Mix ………………………………………………………………………………………………… 152
Mix 文件夹结构 …………………………………………………………………………………… 154
运行Mix …………………………………………………………………………………………….. 154
Mix 提供了什么 …………………………………………………………………………………… 155
前端预设和认证脚手架………………………………………………………………………………… 161
前端预设 …………………………………………………………………………………………….. 161
认证脚手架………………………………………………………………………………………….. 162
分页 ………………………………………………………………………………………………………….. 162
分页数据库结果 …………………………………………………………………………………… 163
手动创建分页 ………………………………………………………………………………………. 164
消息包 ……………………………………………………………………………………………………….. 165
命名错误包………………………………………………………………………………………….. 166
字符串助手、多元化和本地化 ……………………………………………………………………… 167
字符串助手和多元化 …………………………………………………………………………….. 167
本地化 ………………………………………………………………………………………………… 168
测试 ………………………………………………………………………………………………………….. 171
测试消息包和错误包 …………………………………………………………………………….. 171
翻译和本地化 ………………………………………………………………………………………. 172
小结 ………………………………………………………………………………………………………….. 172
第7 章 收集和处理用户数据…………………………………………. 173
注入请求对象 …………………………………………………………………………………………….. 173
$request->all() ……………………………………………………………………………………… 173
$request->except() 和$request->only() …………………………………………………….. 174
$request->has() …………………………………………………………………………………….. 175
$request->input() ………………………………………………………………………………….. 175
$request->method() 和$request->isMethod() ……………………………………………. 176
数组输入 …………………………………………………………………………………………….. 176
JSON 输入($request->json()) ……………………………………………………………….. 176
路由数据 ……………………………………………………………………………………………………. 178
通过Request 实现 ………………………………………………………………………………… 178
通过路由参数实现 ……………………………………………………………………………….. 178
上传的文件 ………………………………………………………………………………………………… 178
验证 ………………………………………………………………………………………………………….. 181
Request 对象的validate() 方法 ……………………………………………………………….. 181
手动验证 …………………………………………………………………………………………….. 183
自定义规则对象 …………………………………………………………………………………… 184
显示验证错误信息 ……………………………………………………………………………….. 185
表单请求 ……………………………………………………………………………………………………. 185
创建表单请求 ………………………………………………………………………………………. 186
使用表单请求 ………………………………………………………………………………………. 187
Eloquent 模型批量赋值 ………………………………………………………………………………… 187
{{ 与{!! …………………………………………………………………………………………………….. 189
测试 ………………………………………………………………………………………………………….. 189
小结 ………………………………………………………………………………………………………….. 190
第8 章 Artisan 和Tinker………………………………………….. 191
Artisan 入门 ……………………………………………………………………………………………….. 191
Artisan 的基本命令 ……………………………………………………………………………………… 192
选项 ……………………………………………………………………………………………………. 193
组合命令 …………………………………………………………………………………………….. 193
编写自定义的Artisan 命令 …………………………………………………………………………… 196
示例命令 …………………………………………………………………………………………….. 198
参数和选项………………………………………………………………………………………….. 199
使用Input 输入 ……………………………………………………………………………………. 200
提示 ……………………………………………………………………………………………………. 202
输出 ……………………………………………………………………………………………………. 203
编写基于闭包的命令 …………………………………………………………………………….. 205
在普通代码中调用Artisan 命令 ……………………………………………………………………. 205
Tinker ………………………………………………………………………………………………………… 206
Laravel Dump 服务 ……………………………………………………………………………………… 207
测试 ………………………………………………………………………………………………………….. 208
小结 ………………………………………………………………………………………………………….. 209
第9 章 用户认证和授权……………………………………………… 210
用户模型和迁移 ………………………………………………………………………………………….. 210
使用auth() 全局助手和Auth 外观 …………………………………………………………………. 214
认证控制器 ………………………………………………………………………………………………… 214
RegisterController ………………………………………………………………………………… 215
LoginController ……………………………………………………………………………………. 216
ResetPasswordController ……………………………………………………………………….. 217
ForgotPasswordController ……………………………………………………………………… 217
VerificationController ……………………………………………………………………………. 218
Auth::routes() ……………………………………………………………………………………………… 218
认证脚手架 ………………………………………………………………………………………………… 219
“记住我” ……………………………………………………………………………………………………. 220
手动认证用户 …………………………………………………………………………………………….. 221
手动登出一个用户 ………………………………………………………………………………………. 221
使其他设备上的会话无效 ……………………………………………………………………… 222
认证中间件 ………………………………………………………………………………………………… 222
电子邮件验证 …………………………………………………………………………………………….. 223
Blade 身份验证指令 …………………………………………………………………………………….. 224
保护 ………………………………………………………………………………………………………….. 224
修改默认保护 ………………………………………………………………………………………. 225
在不改变默认值的情况下使用其他保护 ………………………………………………….. 225
添加新的保护 ………………………………………………………………………………………. 226
请求保护闭包 ………………………………………………………………………………………. 226
创建自定义用户提供者 …………………………………………………………………………. 226
为非关系数据库自定义用户提供者 ………………………………………………………… 227
认证事件 ……………………………………………………………………………………………………. 228
授权(ACL)和角色 …………………………………………………………………………………… 228
定义授权规则 ………………………………………………………………………………………. 229
Gate 外观(和注入Gate) ………………………………………………………………………. 230
Resource Gate ………………………………………………………………………………………. 230
Authorize 中间件 ………………………………………………………………………………….. 231
控制器授权………………………………………………………………………………………….. 231
检查用户实例 ………………………………………………………………………………………. 233
Blade 检查 …………………………………………………………………………………………… 234
拦截检查 …………………………………………………………………………………………….. 234
政策 ……………………………………………………………………………………………………. 235
测试 ………………………………………………………………………………………………………….. 238
小结 ………………………………………………………………………………………………………….. 240
第10 章 请求、响应和中间件……………………………………….. 241
Laravel 的请求生命周期 ………………………………………………………………………………. 241
引导应用 …………………………………………………………………………………………….. 242
服务提供者………………………………………………………………………………………….. 242
Request 对象 ………………………………………………………………………………………………. 244
在Laravel 中获得Request 对象 ……………………………………………………………… 245
获得Request 中的基本信息 …………………………………………………………………… 246
Response 对象 …………………………………………………………………………………………….. 250
在控制器中创建和使用Response 对象 ……………………………………………………. 250
特殊的响应类型 …………………………………………………………………………………… 251
Laravel 和中间件 ………………………………………………………………………………………… 257
中间件介绍………………………………………………………………………………………….. 257
创建自定义中间件 ……………………………………………………………………………….. 258
绑定中间件………………………………………………………………………………………….. 260
将参数传递到中间件 …………………………………………………………………………….. 262
信任代理 ……………………………………………………………………………………………………. 263
测试 ………………………………………………………………………………………………………….. 264
小结 ………………………………………………………………………………………………………….. 265
第11 章 容器………………………………………………………… 267
依赖注入简介 …………………………………………………………………………………………….. 267
Laravel 中的依赖注入 ………………………………………………………………………………….. 269
全局助手函数app() …………………………………………………………………………………….. 269
容器是如何装配的 ………………………………………………………………………………………. 270
将类绑定到容器 ………………………………………………………………………………………….. 271
绑定到闭包………………………………………………………………………………………….. 271
绑定单例、别名和实例 …………………………………………………………………………. 272
绑定接口的具体实现 …………………………………………………………………………….. 273
绑定上下文………………………………………………………………………………………….. 274
Laravel 模块中的构造器注入 ………………………………………………………………………… 275
方法注入 ……………………………………………………………………………………………………. 275
外观与容器 ………………………………………………………………………………………………… 277
外观如何运转 ………………………………………………………………………………………. 277
实时外观 …………………………………………………………………………………………….. 279
服务提供者 ………………………………………………………………………………………………… 279
测试 ………………………………………………………………………………………………………….. 280
小结 ………………………………………………………………………………………………………….. 281
第12 章 测试………………………………………………………… 282
测试基础 ……………………………………………………………………………………………………. 283
测试的命名 ………………………………………………………………………………………………… 287
测试环境 ……………………………………………………………………………………………………. 288
用于测试的特征 ………………………………………………………………………………………….. 288
RefreshDatabase …………………………………………………………………………………… 289
WithoutMiddleware ………………………………………………………………………………. 289
DatabaseMigrations ………………………………………………………………………………. 289
DatabaseTransactions …………………………………………………………………………….. 289
简单的单元测试 ………………………………………………………………………………………….. 290
应用测试:它是如何工作的 …………………………………………………………………………. 291
测试用例 …………………………………………………………………………………………….. 291
HTTP 测试 …………………………………………………………………………………………………. 292
通过$this->get() 和其他HTTP 方法测试基础页面 …………………………………… 292
通过$this->getJson() 测试JSON 接口和其他JSON 格式调用 ……………………. 293
针对$response 进行断言 ……………………………………………………………………….. 293
认证响应 …………………………………………………………………………………………….. 296
HTTP 测试中的一些其他定制化内容 ……………………………………………………… 297
处理应用测试中的异常 …………………………………………………………………………. 297
数据库测试















