本书主要讲解laravel框架底层组件的实现细节,设计模式在框架中的运用,和一个laravel应用实例

第一章 组件化开发与composer使用

组件化开发

Laravel底层就使用了很多Symfony的组件,如果对一些组件不满意可以使用其他开源组件替换,如Laravel的Illuminate Container类可以替换为Pimple的IOC容器类。

composer使用

composer的自动加载有PSR-0,PSR-4,classmap,files四种规范形式,files主要用来加载函数库,classmap会搜索目录下的所有php和inc后缀的文件生成映射,PSR-4是命名空间和目录的映射,PSR-0已渐渐被废除。

构建Laravel框架

目标:MVC框架,实现路由,控制器,数据库操作,视图模板 借助工具:Laravel的Illuminate组件

步骤:

1.项目初始化:composer.json

2.添加路由组件

3.添加控制器模块

4.添加模型组件

5.添加视图组件

第二章 Laravel安装和环境搭建(无需总结)

第三章 Laravel框架中常用的PHP语法

组件化开发语法条件

命名空间 类似文件系统的文件夹,同时是实现自动加载的一个机制(命名空间到文件夹路径的映射)

文件包含 include和require,作用几乎一样,报错级别不同,require会中止,include会继续执行。也是自动加载实现的基础。

匿名函数

匿名函数也就是closure,主要的用法有:作为callback函数, 储存作用域状态,修改传入类状态。

魔术

魔术方法 魔术方法在执行某些操作的时候触发,如在Eloquent Model里使用__get和__set 对attribute数组进行获取和添加

魔术常量 如$_SERVER 等等

反射

依赖注入和IOC容器的实现机制,获取Class信息

后期静态绑定

static和self 扩展类调用父类的时候有所区别,如Laravel中Model调用Model Abstract Class

Trait

横向继承,组合,解决PHP单继承的缺点

第四章 Laravel框架中使用的HTTP协议基础

后端工程师更多关注与复杂的业务流程和架构设计,这一章的内容是常常被忽视的知识点。

HTTP协议,应用层协议,无状态, 报文包含HTTP首部和主体数据,TCP三次握手建立连接,请求一次就关闭连接。

```数据链路层 和 网络层 各自的职责 数据包的封装格式,数据包如何从一台主机传到另一台


数据链路层 和 网络层 各自的职责


网段内通信和网段之间的通信 (地址转发表,路由控制表) 内只需要地址转发表,之间需要路由控制表,两个都需要ARP


ARP协议的职责:解析IP和MAC的映射关系


DNS 负责域名解析


HTTP request和response报文结构

状态码 1 继续 2 成功 3 重定向 4 客户端错误 5 服务端错误 ```

第五章 Laravel框架初识

Laravel框架应用程序目录结构(无需总结)

Laravel应用程序的三个重要环节

路由

再路由服务提供者启动过程中由Route-ServiceProvider.php中的map方法和require_app_path('Http/routes.php');加载。

控制器

作为HTTP请求的二次分发控制部分,与路由关系紧密,但通过服务容器以依赖注入的方式解决了这种耦合关系,使得控制器与其他类耦合度非常低。

视图

Laravel将视图作为一个独立的组件与控制器解耦,在任何位置使用view() 相当于View::make(),最终调用的是Illuminate\View\Factory\make()方法,进而创建Illuminate/View/View类的实例化对象,就可以加载视图。

Laravel框架中的设计模式

服务容器

工厂模式

IOC模式

源码解析(之后要认真看看)

请求处理管道

容器和服务提供者解决了依赖注入和资源获取的功能,因为我们可以随时获取需要的服务,实现想要的功能。而对于服务器,真正需要的处理请求并生成响应输出给客户端,这些步骤要达到松耦合,在Laravel中使用了中间件,设计者将其比喻成洋葱,分成许多的层,每层有特定的功能,可随时添加和修改层。中间件使用的是装饰者模式,但在PHP特有的编程方式下形式发送了变化。

装饰者模式

装饰者模式主要遵循了设计原则中的开闭原则,不修改源代码的情况下添加或减少功能。

装饰者实现统一的接口,并以依赖注入的形式将装饰者实例化,继承父类,重写方法决定是在父类方法前执行还是之后。

书中的实例:

小芳类实现Decorator接口的display()

服饰类同样实现接口的display(),并可依赖注入其他Decorator修饰它们,调用注入的Decorator类的display()

鞋子类继承服饰类,并重写父类方法,在父类display之前执行

裙子类继承服饰类,并重写父类方法,在父类之前执行

Fire类继承服饰类,重写父类方法,在之前和之后分别执行自己的逻辑

在这个例子中小芳类是对请求的响应,相当于控制器。而这些打扮类就相当于中间件的功能,在打扮的过程中可随时增加新的打扮类,只要该类继承Finery类并调用父类的同名方法,这就是装饰者模式的应用场景

请求处理管道

实例间的功能调用通过闭包函数完成

部分源码(之后要认真看看)

第七章 请求到响应的生命周期

第八章 服务容器与服务提供者

最后 书中的练习

构建的Laravel框架