为什么 Laravel 没有规划 models 目录?

本章节做为一个彩蛋。 从开始接触 Laravel 的时候,就发现 Laravel 的模型为什么不放到一个 model 的目录?而放在 app 目录下。 这个不是很不好维护吗?后来去查了相关资料,如果你有相同疑问的朋友可以推荐你去看下。 资料地址 资料地址...

PHP 新特性 Trait 在 Laravel 中的应用

Trait 是什么? Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相关典型问题。 Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。 无法...

Eloquent ORM 中的 find 方法的实现流程

Eloquent ORM是什么? Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应的「模型」用来与该表交互。你可以通过模型查询数据表中的数据,并将新记录添加到数据表中。 简单例子 namespace App; use Illuminate\Database\Eloquent\Model; cla...

Laravel 事件之观察者模式

观察者模式 Laravel的事件提供了一个简单的观察者实现,能够订阅和监听应用中发生的各种事件。 既然用到观察者实现,那我们先来说下什么是观察者 观察者模式(Observer),当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新。 场景:一个事件发生后,要执行一连串更新操作.传统的编程方式,就是在事件的代码之后直接加入处理逻辑,当更新得逻辑增多之后,代码会变得难以维护.这...

一个 Laravel 请求的完整生命周期

为什么生命周期不在第一节开始讲,就怕如果不理解所谓的IoC、Facade、中间件之类的概念,生命周期理解起来生命周期理解出来可能有一定的难度。 源码剖析 Laravel 应用的所有请求入口都是 public/index.php 文件。打开index.php 发现代码也就几行。 define('LARAVEL_START', microtime(true)); require __DI...

Laravel 中间件、管道之面向切面编程

Laravel中间件是什么 Laravel 中间件提供了一种方便的机制来过滤进入应用的 HTTP 请求。例如,Laravel 内置了一个中间件来验证用户的身份认证。如果用户没有通过身份认证,中间件会将用户重定向到登录界面。但是,如果用户被认证,中间件将允许该请求进一步进入该应用。 当然,除了身份认证以外,还可以编写另外的中间件来执行各种任务。例如:CORS 中间件可以负责为所有离开应用的...

Contracts 契约之面向接口编程

这一节的内容很简单。其实在我们讲依赖注入的时候已经说过了。我们再来具体解释一下。 契约定义 什么是契约?契约就是所谓的面向接口编程。我们拿之前的例子说如果不使用接口会有什么问题。 // 文件记录日志 class FileLog { public function write(){ echo 'file log write...'; } } // 数据库...

如何实现 IoC 容器和服务提供者是什么概念

IoC 容器和服务提供者 上一节我们的代码还是没有完全达到解偶,假如我们项目里有很多功能用到了这个login功能,我们则在这几个页面反复写。但是突然我们有一天换需求了,觉得数据库记录日志不太好,想要改成文件的,那我们不是每个页面用到login功能的都去替换成new FileLog()呢?,那改如何修改呢? 我们可以借助一个容器,提前把log,user都绑定到Ioc容器中。User的创建交...