目 录
Contents
第1章 Laravel概述
1.1 选择Laravel的原因
1.2 选择Laravel的意义
1.3 如何选择一套适合的框架
1.4 Laravel特色与价值
1.5 结语
第2章 设置Laravel开发环境
2.1 环境建置及系统需求
2.2 Laravel系统环境需求
2.3 Laravel Homestead
2.4 安装Laravel
2.5 在Windows系统中安装并设置环境
2.6 结语
第3章 电子商务网站规划
3.1 前言
3.2 情境分析
3.3 功能需求分析
3.4 数据表字段规划
3.5 结语
第4章 网址设计规划
4.1 网址设计规范
4.2 网址主从关系设计
4.3 网址路由(Route)
4.4 结语
第5章 控制器与模板设计规划
5.1 控制器的位置
5.2 命名空间
5.3 使用模板
5.4 模板数据显示
5.5 模板继承
5.6 模板组件化
Laravel框架开发详解:从零基础到运用框架快速开发PHP网站
2
5.7 载入共用的css与js文件
5.8 结语
第6章 数据库设置及建立
6.1 连线设置
6.2 连线到MySQL
6.3 .env环境变量文件
6.4 设置环境变量
6.5 env( )函数
6.6 数据库迁移(Migration)
6.7 结语
第7章 用户注册
7.1 注册路由
7.2 注册页控制器及模板
7.3 注册页数据处理控制器
7.4 CSRF保护
7.5 接收用户注册数据
7.6 数据验证
7.7 验证规则
7.8 开始验证数据
7.9 显示验证错误信息
7.10 验证信息语言设置
7.11 字段名称语言
7.12 验证错误表单数据保留
7.13 密码加密
7.14 新增用户数据至数据库
7.15 发送用户注册通知信
7.16 结语
第8章 用户登录验证
8.1 登录及退出登录路由
8.2 登录页控制器和模板
8.3 用户登录数据验证
8.4 取得用户数据
8.5 导出Eloquent SQL语法
8.6 验证密码
8.7 用户登录
8.8 Session设置
8.9 登录身份界面检视
8.10 用户退出登录
8.11 结语
第9章 商品管理与浏览
9.1 商品路由
9.2 建立商品页控制器
9.3 商品编辑页控制器
9.4 网站图片存储方式
9.5 商品编辑页模板
9.6 模板显示预设数据
9.7 权限管控
9.8 建立中间件
目 录
3
9.9 登录用户中间件
9.10 表单HTTP方法设置
9.11 商品图片处理
9.12 裁切图片
9.13 管理商品
9.14 结语
第10章 购买商品
10.1 商品购买路由
10.2 商品清单检视页控制器
10.3 商品清单检视页模板
10.4 商品单品检视页控制器
10.5 商品单品检视页模板
10.6 商品购买处理数据验证
10.7 数据交易处理
10.8 交易数据锁定
10.9 交易检查及商品数据更新
10.10 交易异常处理
10.11 记录交易记录
10.12 检视用户交易记录
10.13 交易记录与商品关联
10.14 获取交易的商品关联数据
10.15 结语
第11章 社区登录
11.1 加入Github ID字段
11.2 执行Migration变更
11.3 安装laravel/socialite扩展包
11.4 设置Github登录验证数据
11.5 设置Github登录路由
11.6 设置OAuth重定向 URI
11.7 Github登录控制器
11.8 取得Github授权数据
11.9 更新Github ID或注册新用户
11.10 Github登录网站
11.11 结语
第12章 工作延迟处理
12.1 队列(Queue)秘书
12.2 建立工作事项(Job)便利贴
12.3 建立注册成功发信工作内容
12.4 变更注册信发送方式
12.5 使用Redis待办工作笔记
12.6 设置Redis待办工作笔记
12.7 记录工作事项便利贴
12.8 执行待办工作
12.9 队列秘书工作流程
12.10 持续执行待办工作
12.11 重新载入Queue程序
12.12 结语
第13章 用户电子报
13.1 建立自定义artisan命令
13.2 发送最新商品电子报
13.3 测试发送电子报artisan命令
13.4 设置排程工作
13.5 设置定时执行任务排程命令
13.6 任务排程命令信息
13.7 任务排程命令信息颜色
13.8 工作事项(Job)优先顺序
13.9 结语
第14章 多国语言
14.1 语言文件设置
14.2 模板语言设置
14.3 用户指定语言
14.4 侦测用户指定语言
14.5 结语
第15章 挖掘更深
15.1 辅助函数
15.2 Collection数据集合对象
15.3 加解密
15.4 错误与日志
15.5 HTTP异常错误代码
15.6 artisan命令
15.7 缓存
15.8 存储(Storage)
15.9 结语
第16章 你好,Laravel
16.1 Laravel 文件夹结构
16.2 请求(Request)
16.3 模板(Blade)
16.4 路由(Route)
16.5 重定向(Redirect)
16.6 CSRF保护
16.7 响应(Response)
16.8 artisan命令
16.9 结语
前言
Introduction
PHP(Hypertext Preprocessor,超级文本预处理语言)是一种在服务器端执行的嵌入
HTML文档的脚本语言,现在被很多网站编程人员广泛运用。笔者目前为关键评论网资深
工程师,使用 PHP 开发网站已经有好几年的经验,并且一直持续不断地精进网站开发的能
力,如数据库的设计规划、设计模式、大流量数据处理、Coding Style(代码风格)、团队
合作开发等。笔者这几年使用过很多 PHP 框架,如 Codeigniter、Kohana、FuelPHP 等,也
曾接触过 Rails 框架,目的是学习更好的开发模式、积累更多的经验,让自己在开发产品时
能够更快速,也能更好地维护代码。
偶然在技术教学影片平台看到 Jeffrey Way 介绍 Laravel,笔者发现 Laravel 给出了所有在开发
网站或 API(应用程序调用接口)中所需要的东西,并有详细的说明文档、强大的社区及弹性的
扩展包。而且 Laravel 是使用自己最熟悉的 PHP 语言,这让笔者一头扎进了 Laravel 的世界。
笔者当时学习的是 Laravel 4.2,且在中国台湾还没有 Laravel 繁体中文文件。在学习
Laravel 的过程中,笔者就顺手将官方文档翻译成繁体中文。随着Laravel 版本的演进,笔者也
持续不断地学习最新的开发模式及技术。在学习过程中,同时将自己学习的心得记录到
“Laravel 5 学习笔记”中,希望能替Laravel 社区做一点贡献。
此次和北京大学出版社合作,出版本书的简体中文版,希望能够为更多读者提供学习帮助。
本书特点
本书不是一本详细介绍 Laravel 函数及功能的书,也不是随着 Laravel 版本更新而会过时的
书。本书会从无到有,以使用 Laravel 构建一个电子商务网站作为案例,带大家从宏观的角度完
整了解 Laravel 的设计概念,发现 Laravel 的美,从而发现原来网页开发可以如此优雅且快速。
本书想让大家知道Laravel 在网站开发中所扮演的角色,知道它可以完成什么样的工
作,能解决哪些问题,让大家对 Laravel 有一个初步完整的认识,并在未来使用 Laravel 做
更多进阶功能的开发时,能够更加得心应手。
在了解了 Laravel 的全貌后,如果想让自己在开发 Laravel 上学习更多进阶的用法,可
以到Laravel官方网站查阅更多、更详细的用法。
Laravel框架开发详解:从零基础到运用框架快速开发PHP网站
2
适合对象
本书适合的对象包括有基础网站开发经验的开发者、有开发网站需求的新创公司、有
网站需要改版的上市公司,以及开始使用 Laravel 来进行网站开发的开发者及开发团队。
致谢
写这本书的过程中,最感谢爸爸、妈妈及妹妹的支持。他们体谅笔者需要牺牲家庭时
间来完成这本书,在背后默默地支持笔者的创作。笔者将这本书献给他们。
感谢笔者在关键评论网的主管 Randy Hsieh(谢旻桦),他在笔者的写作过程中不断鼓
励笔者,在笔者人生遇到困难及瓶颈时,总能给笔者一些不同的经验分享及指引,让笔者
能够克服困难完成本书。
感谢关键评论网的创办人 Mario Yang(杨士范)。他指导笔者要怎样入门,让笔者有
机会成为一位称职的作者。
感谢在这几年工作中,在技术上指导笔者,并陪伴笔者一起成长的 Deckran(小柯)、
Rex Lu(卢建洲)、Sankai Liao(廖三凯)。没有他们在旁边指导,一起教学相长,不会
有今日的笔者,也不会有这本书问世。
感谢 Shengyou Fan(范圣佑)努力地经营中国台湾 Laravel 社区,努力举办活动,推荐
Laravel 给所有的网站开发者及公司。
感谢博硕文化的总编辑 Simon(陈锦辉),在网络上看到笔者的“Laravel 5 学习笔
记”,热情来信邀稿。没有他的邀稿,也不会有这本书出版的机会。
感谢博硕文化的编辑 Sam Wei(魏声圩)的照顾,细心地解答笔者在写书过程中遇到
的任何问题,让本书能够更臻完美。
感谢在笔者人生中,包容笔者的任性,并持续耐心地在笔者身边提点笔者、陪伴笔者的好朋
友们。他们在生活中任何直接或间接的慰问关心,都是笔者能够走到今天的最大养分及动力。
感谢全世界各地的 Laravel 开发者,没有你们的加入,Laravel 就没有今天的成长及
规模。
在多年工作及开发数个产品的过程中,笔者觉得使用 Laravel 开发网站是一件令人幸福
且开心的事。希望更多的开发者能够加入 Laravel 这个大家庭。
资源获取和交流
读者可通过下载链接https://github.com/kejyun/laravel5-for-
beginner-shop-laravel进行源代码的下载,也可以通过扫描右侧二维
码进行下载。有任何意见或疑问,可通过邮箱和笔者进行交流。
笔者邮箱:kejyun@gmail.com。
Laravel是PHP的框架(Framework),给出了很多开发网站或API所需的工具及环境,经过简单
的设置就可以完成数据的处理及显示,使开发者可以很优雅且快速地开发出各个不同的产品。本书适
合有PHP基础,但不知道怎么选择框架的读者,不用框架的读者通过本书也能够明白它的好处。
本书以建置一个完整的电子商务网站为例,从环境建置、网站规划、数据库建置、发送电子邮件
及网站优化等各个流程,教大家如何用Laravel去建置整个网站。建置过程中可以了解到整个Laravel
的设计架构及逻辑,使读者得以初窥Laravel的面貌。
在了解整个Laravel的架构概念后,可以试着用Laravel给出的更多方法及扩展包,协助自己快速
地进行产品的开发。越熟悉Laravel,越能感受到Laravel带给开发者优雅且快速的感受。让我们成为
幸福的开发者吧!
洪可郡(KeJyun),中国台湾资深网页工程师,曾在关键评论网、PCHome、达谊股份有限公司任职,有多年网页开发经验,擅长处理数据库的设计规划、设计模式、大流量数据处理、Coding Style、团队合作开发等。
Laravel是PHP的框架(Framework),提供了很多开发网站或API所需的工具及环境,用户经过简单的设定就可以完成数据的处理及显示,使开发者可以很“优雅”且“快速”地开发出各种不同的产品。虽然WordPress也能够架站,但如果有定制化需求,要开发各式各样的网站,或打算提供APP使用的API,便只能选择用框架,而Laravel是目前受欢迎的选择。
本书适用最新版的Laravel 5.5,主要内容共分为16章。第1~2章主要介绍了Laravel的基本情况,详细解说了为什么要使用框架及此框架的优缺点;第3~6章主要讲解了如何选择框架,并用框架快速建构一个网站,如电子商务网站规划、网址设计规划、控制器与模板设计规划、数据库设定及建立等;第7~14章主要讲解了网站建立后的一些具体操作设置,如会员注册、会员登入验证、商品管理与浏览、商品管理与浏览、小区登入、工作延迟处理、会员电子报、多国语言等;第15~16章主要讲解了Laravel框架内容的拓展延伸和此框架的发展前景。书中尽量避免使用专业的技术用语,而尽量使用最通俗易懂的案例及用语,让读者更容易进入Laravel的世界。
本书适合有PHP基础的网站开发者进行参考学习,同时适用于不知道如何选择框架的用户。