框架开发-Laravel

0. 准备姿势 (安装部署)

  1. composer(依赖管理工具) 安装/使用
    1.1. composer下载

    1
    `https://getcomposer.org`     [composer官网]

    1.2. 环境检查
    1.3. 安装
    1.4. 源地址问题

    1
    `https://developer.aliyun.com/composer` [Composer 阿里镜像]

    1.5. 使用composer

    1
    2
    PS. 下载量最高的 100 个 Laravel 扩展包推荐
    https://github.com/summerblue/laravel-package-top-100

  1. Laravel安装

2.0 Laravel被称为“全栈”式框架,因为它能够处理从网络服务到数据库管理、HTML生成的一切事情,垂直集成的web开发环境给开发者提供了更好的体验

Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。

2.1. 选择Lravel框架的版本 与 运行环境

Laravel 版本计划
LTS 与 非LTS
LTS意为: Long Time Support.
非LTS: 更新频繁.

1
2
3
4
5
6
7
8
9
10
Laravel 5.1 LTS – 2015 年 6 月份
LTS 长久支持版本,Bug修复直到2017年6月份,安全修复直到2018年6月份.
Laravel 5.2 – 2015 年 12 月份
一般发行版,提供6个月的Bug修复支持,一年的安全修复支持.
Laravel 5.3 – 2016 年 8 月份
一般发行版,提供6个月的Bug修复支持,一年的安全修复支持.
Laravel 5.4 – 2017 年 1 月份
一般发行版,提供6个月的Bug修复支持,一年的安全修复支持.
Laravel 5.5 LTS – 2017 年 7 月份
下一个版本的LTS版本,会停止Laravel 5.1的Bug修复,安全修复直到2018年7月份.

2.2. 安装Laravel

1
2
3
4
5
6
`http://laravelacademy.org`

1). 通过Composer 安装 Laravel 安装器
2). 通过Composer Create-Project 新建项目

composer create-project --prefer-dist laravel/laravel laravel-case 5.5.*
1
3). 复制已安装好的 laravel框架

2.3. 访问 / 配置虚拟主机


一. 初识佳人 (基本及配置)

  1. Laravel的目录结构

    ![1567586616147](/images/imgs/客户端 浏览器.png)

1.1. Laravel的目录部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|-- app              应用目录(程序逻辑部分)
|-- bootstrap 启动和自动载入配置目录
|-- cache 存放框架启动缓存
|-- app.php 创建框架应用实例
|-- autoload.php 自动加载
|-- config 配置文件目录
|-- app.php 系统级配置文件
|-- auth.php 用户身份认证配置文件
|-- broadcasting.php 事件广播配置文件
|-- cache.php 缓存配置文件
|-- compile.php 编译额外文件和类需要的配置文件,一般用户很少用到
|-- database.php 数据库配置文件
|-- filesystems.php 文件系统配置文件,这里可以配置云存储参数
|-- mail.php 电子邮件配置文件
|-- queue.php 消息队列配置文件
|-- services.php 可存放第三方服务的配置信息
|-- session.php 配置session的存储方式和生命周期等信息
|-- view.php 模板文件配置文件,包含模板目录和编译目录等
|-- database 数据库迁移和填充文件目录
|-- public 网站入口目录
|-- css 前端CSS文件目录
|-- js 前端JS文件目录
|-- index.php 入口文件
|-- .htaccess Apache服务器用该文件重写URL
|-- web.config IIS服务器用该文件重写URL
|-- resources 视图与原始资源文件目录
|-- assets 可存放包含LESS、SASS、CoffeeScript在内的原始资源文件
|-- lang 本地化文件目录
|-- views 视图文件目录(view层文件就在这里)
|-- routes 路由目录(3种路由文件)
|-- web.php 包含的路由都会应用web中间件组
|-- api.php 包含的路由应用了api中间件组
|-- console.php 用于定义所有基于闭包的控制台命令
|-- storage 本地存储:编译后的blade模板等文件目录
|-- app 可用于存储应用程序所需的一些文件
|-- framework 该目录下包括缓存、sessions和编译后的视图文件
|-- logs 日志目录
|-- tests 自动化测试目录
|-- vendor Composer依赖目录(Laravel框架源码和第三方类库)
|-- .env 环境配置文件
|-- .env.example 环境配置文件(示例)
|-- .gitattributes 用于设置文件的对比方式(GIT)
|-- .gitignore 忽略文件(GIT)
|-- artisan 控制台命令文件
|-- composer.json Composer的依赖关系描述文件
|-- composer.lock Composer的锁定版本库文件
|-- gulpfile.js 前端构建工具gulp的配置文件
|-- package.json npm的依赖模块配置文件
|-- phpunit.xml php单元测试文件
|-- readme.md 读我.md
|-- server.php PHP内置web服务器的快速调试脚本

1.2. App应用目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 @ 表示默认不存在,但可创建的内容
|-- Console 命令行程序目录(自定义的Artisan命令)
|-- Commands 包含了用于命令行执行的类,可在该目录下自定义类
|-- Kernel.php 命令调用内核文件
|-- Exception 异常处理器
|-- Http 控制器、中间件以及表单请求等
|-- Controllers 控制器目录
|-- Middleware 中间件目录
@|-- Requests 请求类目录
|-- Kernel.php 包含http中间件和路由中间件的内核文件
|-- Providers 服务提供者:绑定服务到容器、注册事件等
User.php ORM 模型类(对象关系映射)

@|-- Events 事件类目录,处理应用事件的
@|-- Jobs 队列任务
@|-- Listeners 事件监听器
@|-- Mail 邮件发送类
@|-- Notifications 应用发送的所有通知
@|-- Policies 授权策略类

  1. Laravel的配置

2.1. 开发前的一些配置

1
2
3
4
5
6
7
8
9
10
11
12
13
1).目录权限问题
/storage
/vendor
/bootstrap/cache

2).应用密钥 (APP_KEY)
php artisan key:genera

3).时区设置

4).清空缓存
php artisan cache:clear

2.2. 开发中用到的配置
1). 环境配置文件说明
.env
2). 访问配置
3). 配置缓存
php artisan config:cache
4). 维护模式(网站一键离线功能)
php artisan down
php artisan up

1
2
5). 错误&日志

1
2
6). HTTP 状态异常


二. 尝试接近 (路由)

  1. 路由说明 文件位置
  1. 基本路由
1
2
3
4
5
6
7
8
9
Route::get('/get',function(){}); //GET方式
Route::post('/post',function(){}); //POST方式
Route::match(['get','post'],'/',function(){});//指定一组 允许的请求方式
Route::any('/all',function(){});//可响应所有 HTTP请求
Route::put(...); //不常用
Route::delete(...); //不常用
Route::options(...);//不常用
以上请求方式中,只有get与options不需要csrf验证

PS.1 postman 请求工具

  1. 参数路由
    3.1. 必选参数
    3.2. 可选参数
    3.3. 约束参数格式
    3.4. 多个参数

  2. 命名路由

  3. 路由组设置

  4. 当前访问的路由信息
    返回数组,包含路由信息
    $route = Route::current();
    路由name的名字,放在控制器里执行
    $name = Route::currentRouteName();
    控制器里action名称
    $action = Route::currentRouteAction();

PS.2 Laravel-Debugbar 调试工具
用于显示调试 及 错误信息 以方便开发.


PS.1 postman 请求工具
可指定模拟GET或POST等多种方式,去请求页面.
下载Postman程序 https://www.getpostman.com/
GET方式,在URL地址栏里带参数,直接请求即可.
POST方式: 要设置以下两项
Headers (请求头数据类型,同表单enctype的默认值)
Body (请求体)


PS.2 Laravel-Debugbar 调试工具
用于显示调试 及 错误信息 以方便开发.
!(只能在开发过程中 使用该扩展包:因为它会 显示框架信息 还对性能有影响)

1.安装 Debugbar
barryvdh/laravel-debugbar
https://packagist.org/packages/barryvdh/laravel-debugbar

使用方法,请参考文档!

三. 执子之手 (中间件)

  1. 中间件介绍
  2. 创建中间件
    php artisan make:middleware Test
  3. 中间件功能设计
  4. 注册中间件
    全局中间件: $middleware
    中间件组: $middlewareGroups
    指定路由中间件: $routeMiddleware
  5. 使用中间件
  6. CSRF保护
    HTML表单里设置CSRF令牌
    从CSRF保护中排除指定URL
    JQuery中的CSRF令牌处理

四. 正式交往 (控制器)

  1. 控制器介绍
  2. 创建控制器
    使用Artisan命令创建
    php artisan make:controller UserController
    php artisan make:controller OrderController
  3. 使用路由访问控制器
    1. 普通访问
    2. 带参数访问
    3. 别名访问
  4. 单动作控制器(单功能)
  5. 控制器中间件
  6. RESTful 资源控制器
    php artisan make:controller PhotoController --resource
  7. 依赖注入 & 控制器
    1. 依赖注入说明
    2. 构造函数注入
    3. 方法注入
    4. GET参数 与 路由参数 的问题
  8. 路由缓存 (基于控制器)
    生成路由缓存: php artisan route:cache
    移除路由缓存: php artisan route:clear

五. 提出要求 (HTTP请求)

  1. HTTP请求的报文的说明
  2. 基本信息获取
  3. 请求参数的获取
  4. 闪存信息
  5. 文件信息处理

六. 满足要求 (HTTP响应)

  1. 返回字串/数组/视图/json
  2. 响应-下载
  3. 跳转和重定向

七. 制造美好 (视图)


八. 人造人计划 (DB数据操作)

  1. 连接数据库
  2. 原生数据库操作
  3. 查询构建器