千家信息网

Laravel 5.5核心架构的示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家分享的是有关Laravel 5.5核心架构的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、依赖注入方法传入组件名,框架会自动实例化,方法内可直接使
千家信息网最后更新 2026年11月01日Laravel 5.5核心架构的示例分析

这篇文章给大家分享的是有关Laravel 5.5核心架构的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1、依赖注入

方法传入组件名,框架会自动实例化,方法内可直接使用

例如最常用的requert对象

2、服务容器

其实,Laravel 的核心就是一个 IoC 容器,Laravel 的核心本身十分轻量,并没有什么很神奇很实质性的应用功能。很多人用到的各种功能模块比如 Route(路由)、Eloquent ORM(数据库 ORM 组件)、Request(请求)以及Response(响应)等等等等,实际上都是与核心无关的类模块提供的,这些类从注册到实例化,最终被你所使用,其实都是 Laravel 的服务容器负责的。

服务提供者主要分为两个部分,register(注册) 和boot(引导、初始化)

3、服务提供者

一个类要被容器所能够提取,必须要先注册至这个容器。既然 Laravel 称这个容器叫做服务容器,那么我们需要某个服务,就得先注册、绑定这个服务到容器,那么提供服务并绑定服务至容器的东西,就是服务提供者(Service Provider)。

4、向IOC 容器添加自己的类

4.1、新建validate类

4.2、新建validateProvider

4.3、绑定validate类到Provider

app->bind('valicate',function(){  return new Validate(); }); }}

4.4、添加Provider到IOC容器

4.5、使用

4.6、成功!

5、门面(facade)

facade用来提供统一的接口,比如无论你用哪种cache,redis还是memcache,客户端都可以用cache::get()方式来获取value,至于具体是用了redis还是memcahe,就看你在sevice provider里面绑定了哪个。cache::get()的实现方式是,继承Facade方法getFacadeAccessor,返回你在容器中绑定的key值,比如cache,然后Facade类会使用php魔术变量__callstatic(),callstatic的逻辑里面会从container里解析cache所绑定的服务,就是前面提到的service provider绑定了谁

5.1、例如config/app.php里的mail

5.2、这个类只返回一个mailer

5.3、如果调用它的send方法,不存在的话会进入到callstatic的魔术方法

5.4、这个方法会得到mailer的实例,即app('mailer')

5.5、这个实例便能调用mailer类的send方法

6、契约

Laravel 的契约是一组定义框架提供的核心服务的接口。例如,Illuminate\Contracts\Queue\Queue契约定义了队列任务所需的方法,而Illuminate\Contracts\Mail\Mailer契约定义了发送电子邮件所需的方法。框架对每个契约都提供了相应的实现。

好处是实现了程序的低耦合和简单性。

低耦合#

首先,让我们来看一些高耦合缓存实现的代码。如下:

cache = $cache; } /** * 按照 Id 检索订单 * * @param int $id * @return Order */ public function find($id) { if ($this->cache->has($id)) {  // } }}

这个类中,程序跟给定的缓存实现高耦合。因为我们依赖于一个扩展包的特定缓存类。一旦这个扩展包的 API 被更改了,我们的代码就必须跟着改变。

同样的,如果我们想要将底层的的缓存技术( Memcached )替换为另一种缓存技术( Redis ),那又得再次修改这个repository类。而repository类不应该了解太多关于谁提供了这些数据或是如何提供的等等。

比起上面的做法,我们可以使用一个简单的、与扩展包无关的接口来改进我们的代码:

cache = $cache; }}

现在,更改之后的代码没有与任何扩展包甚至是 Laravel 耦合。而契约扩展包不包含任何实现和依赖项,你可以轻松地写任何给定契约的替代实现,来实现不修改任何关于缓存消耗的代码就可以替换缓存实现。

感谢各位的阅读!关于"Laravel 5.5核心架构的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

容器 服务 方法 契约 缓存 核心 代码 耦合 实例 就是 接口 提供者 框架 架构 示例 分析 内容 功能 技术 数据 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中关村互联网科技集团 重生之互联网科技帝国 互联网和科技技术 互联网科技卖菜 互联网科技与金融科技 上海互联网科技有限公司 互联网科技缩写 互联网科技教育视频 湖北码尼互联网科技有限公司电话 昭通互联网科技选哪家 未来五年的互联网科技 乌苏新华互联网科技做什么的 广州新华互联网科技学校电竞方面 明优互联网科技有限公司 无锡工业互联网科技有限公司 国大互联网教育科技有限公司薪资 城市宝互联网科技有限公司 10位科技互联网大佬 广州全民伙伴互联网科技有限公司 小牛互联网科技有限公司地址 广东万易互联网科技有限公司惠州分公司 中国互联网科技股 智能科技公司是互联网公司吗 苏州互联网科技贷款公司 华夏恒生互联网科技013171 互联网科技快讯热点 上海同邻互联网科技有限公司规模 容联科技互联网电商 恒生科技指数 中概互联网 株洲百竞科技的互联网营销顾问
0