[ Laravel 从学徒到工匠系列 ] 服务提供者篇

作为引导者 Laravel 服务提供者主要用来进行注册服务容器绑定(即注册接口及其实现类的绑定)。事实上,Laravel 有好几十个服务提供者,用于管理框架核心组件的容器绑定。几乎框架里每一个组件的容器绑定都是靠服务提供者来完成的。你可以在 config/app.php 这个配置文件里查看项目目前有哪些服务提供者(从 Laravel 5.5 开始,Laravel 提供了包自动发现功能,所...

[ Laravel 从入门到精通 ] 数据库和 Eloquent 进阶 —— 在 Eloquent 模型类上设置访问器和修改器

问题引出 前面两篇教程我们陆续为大家介绍了模型类的基本增删改查操作,以及如何通过模型类进行批量赋值和软删除,今天我们继续为大家介绍模型类的高级特性 —— 访问器和修改器。 在讲访问器和修改器之前,我们先来看一个例子,在带有用户功能的系统中,除了用户注册时使用的用户名之外,我们有时候还允许用户设置昵称,这个昵称是可选的,我们在页面上显示用户名时,会优先展示用户昵称,如果该用户没有设置昵称,...

[ Laravel 从学徒到工匠系列 ] 接口即契约篇

强类型与鸭子类型 在之前的章节里,我们讨论了依赖注入的基础知识:什么是依赖注入;如何实现依赖注入;依赖注入有什么好处。之前的例子中也模拟了将接口注入到类里面的过程。在我们继续学习后续内容之前,有必要深入讨论一下接口,而这正是很多 PHP 开发者所不熟悉的。 在我成为 PHP 程序员之前,我是写 .NET 的。你觉得我是喜欢原生代码还是什么?在 .NET 里到处都是接口,而且很多接口都定义...

[ Laravel 从学徒到工匠系列 ] 服务容器篇:反射解决方案

Laravel 服务容器中最强大的功能之一就是通过反射来自动解析类的依赖。反射是一种在运行时检查类和方法的能力,比如,PHP 的 ReflectionClass 类可以动态检查给定类的所有方法,PHP 函数 method_exists 从某种意义上说也是一种反射(关于反射的更多细节可以查看 PHP 反射文档)。在开始进入正题之前,我们先来看看 PHP 中反射类的使用: $reflecti...

[ Laravel 从学徒到工匠系列 ] 服务容器篇:使用入门

声明:原书中本章叫做 IoC 容器,在 Laravel 5 中,IoC 容器改名为服务容器,所以,在后续章节,IoC 容器和服务容器指代同一个东西。 我们已经了解了依赖注入及其使用,接下来咱们一起来探索控制反转容器(IoC)。我们前面已经说过,通过 IoC 容器可以帮助我们更方便地管理类依赖,而且 Laravel 提供了一个功能强大的 IoC 容器。这个 IoC 容器在 Laravel...

[ Laravel 从入门到精通 ] 数据库和 Eloquent 进阶 —— 通过 Eloquent 模型实现批量赋值和软删除

在上一篇教程中,我们基于 Eloquent 模型实现了对数据表记录的增删改查操作,今天我们在此基础上介绍两个 Eloquent 模型提供的高级功能 —— 批量赋值和软删除。 批量赋值 批量赋值主要用于快速设置模型属性。 在介绍批量赋值之前,我们先看一个例子,之前我们新增或者修改 Eloquent 模型时都是通过依次设置每个属性来实现的: $post = new App\Post; $po...

[ Laravel 从学徒到工匠系列 ] 依赖注入篇

问题引入 整个 Laravel 框架的基石是一个功能强大的 IoC 容器(控制反转容器),如果你想真正从底层理解 Laravel 框架,就必须好好掌握它。不过,也不要被这个名头吓住,要知道 IoC 容器只不过是一种用于方便我们实现「依赖注入」这种软件设计模式的工具。而且要实现依赖注入并不一定非要通过 IoC 容器,只是使用 IoC 容器会更容易一点儿。 首先,来看看我们为何要使用依赖注入...

[ Laravel 从学徒到工匠系列 ] 开篇:作者自序

自从发布了 Laravel 框架之后,我收到了大量让我写书的请求,大家想让我出一本关于如何构建具有良好架构的、复杂应用的指南。由于每一个应用程序都是独特的,这就需要此书讲述的是通用且实用的理论,同时易于在各种项目中实施。 应大家所求,我写了这本书,我将从 Laravel 框架基础要素之一的依赖注入开始讲起,然后带领大家深入了解服务提供者和应用程序结构,最后谈谈设计模式中的 SOLID 设...

[ Laravel 从入门到精通 ] 数据库和 Eloquent 进阶 —— 通过 Eloquent 模型实现简单增删改查操作

概述 Eloquent 是一个 ActiveRecord ORM 框架,ORM 全称是 Object Relational Mapping,意为对象关系映射,用于实现面向对象编程语言里不同类型系统的数据之间的转换,简单来说,它会构建类与数据表之间的映射关系,从而建立起一个可在编程语言里使用的「虚拟对象数据库」。「ActiveRecord」是 ORM 的一种实现模式,Eloquent 则是...

[ Laravel 从入门到精通 ] 数据库和 Eloquent 进阶 —— 通过查询构建器实现复杂的查询语句

在上一篇教程中,我们通过查询构建器实现了简单的增删改查操作,而日常开发中,往往会涉及到一些更复杂的查询语句,比如连接查询、子查询、排序、分页、聚合查询等等,这一篇教程我们将围绕这些内容展开探讨。 查询小技巧 我们首先来介绍几个 Laravel 自带的语法糖,可以帮助我们快速获取期望的查询结果,提高编码效率。 有时候,我们想要获取的并不是一行或几行记录,而是某个字段的值,你当然你可以查询到...