对laravel5概念的理解 -- 门面模式(Facade)

【PHP】用了这么久的Laravel框架,你分析过核心架构了没 我们在学习技术中单枪匹马,还不如一次短短的交流,你可以在别人吸取各种学习经验,学习方法以及学习技巧。所以,学习与交流少不了一个圈子,提升你的学习技能,请点击加技术群:点击进入暗号: PHP+「平台」 Laravel最初的设计是为了面向MVC架构的,它可以满足如事件处理、用户身份验证等各种需求。另外它还有一个由管理数据库强力支持,用于管理模块化和可扩展性代码的软件包管理器。 Laravel以其简洁、优雅的特性赢得了大家的广泛关注,无论是专家还是新手,在开发PHP项目的时候,都会第一时间的想到Laravel. 阅读详情

前言:


第一次写技术类博客,因为比较懒,至于作为一个懒人为何会写博客,因为记性比较差,常常当初灵光一闪理解的概念最后会忘记。所以还是用文字记录下来,以备自己后查,有缘人看到也可以做个参考,不同意见欢迎指正。不过主要问题是,我表达能力不好,有缘人还得看得懂,恩,必须是有缘人中的有缘人。
为什么写laravel呢,这框架真心牛逼,组件化的优势不提,我主要是用它来学习下PHP设计模式的应用。
OK.废话很多,总算说完了,进入正题。


门面模式


理解3个概念:

1)container的概念,laravel所有的服务都注册在container里面,至于如何注册,就是使用service provider


2)service provider是用来绑定具体使用的服务,比如用mysql数据库,还是redis数据库,然后使用$this->app->bind进行绑定,以此实现松耦合,切换数据库比较方便。


3)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绑定了谁。
Laravel 门面类:Facade简记 简单剖析了Laravel的门面:Facades类的源码,解析了外部能像调用静态方法一样自由调用各个类下的非静态方法。 阅读详情

相关推荐

Laravel中的Facade模式

外观类充当了用户与Laravel服务容器之间的中间层,它提供了一个简洁的接口,用于访问Laravel框架中的各种服务。外观类充当了用户与Laravel服务容器之间的中间层,它提供了一个简洁的接口,用于访问Laravel框架中的各种服务。通过Facade模式,我们可以以简洁的方式使用Laravel提供的各种功能,而无需了解底层的实现细节。通过外观模式,我们可以以简洁的方式使用Laravel提供的各种功能,而无需了解底层的实现细节。类是一个自定义的服务类,它封装了Eloquent ORM的功能。

YxmtAi的博客 232

PHP单例模式

一、什么是单例模式? 单例即一个类是能有一个实例,并提供一个当前类的全局唯一访问入口(getInstance)。防止类被多次实例化和clone。 二、单例模式 代码如下(示例): <?php class Singleton { private static $instance = null; // 禁止被实例化 private function __construct() { } // 禁止clone private funct

李勇康的博客 7157

laravel源码解析之Facade

文档:Facades - Laravel - The PHP Framework For Web Artisans 1.简介 Facades 为应用程序的服务容器中可用的类提供“静态”接口。 也就是Facade为容器中注册的对象提供静态代理 2.RegisterFacades Illuminate\Foundation\Bootstrap\RegisterFacades是初始引导器之一,作用就是初始化Facade public function bootstrap(Ap

蛐蛐的博客 496

PHP 常见设计模式及示例

观察者模式属于行为模式,是定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。简单工厂模式最大的优点在于实现对象的创建和对象的使用分离,将对象的创建交给专门的工厂类负责,但是其最大的缺点在于工厂类不够灵活,增加新的具体产品需要修改工厂类的判断逻辑代码,而且产品较多时,工厂方法代码将会非常复杂。在工厂方法模式中,一个具体的工厂负责生产一类具体的产品,即一对一的关系,但是,如果需要一个具体的工厂生产多种产品对象,那么就需要用到抽象工厂模式了。

hmx224_2014的专栏 1833

大模型技术驱动智慧矿山数字化转型

多模态大模型作为AI领域的前沿技术,通过融合视觉、传感器等多源数据,构建了强大的环境理解与决策能力。其核心价值在于打破数据孤岛,实现实时分析与智能响应,特别适用于工业场景中的复杂系统优化。在智慧矿山建设中,该技术通过数字孪生、设备自诊断和智能调度等模块,显著提升了安全生产效率和资源利用率。典型应用包括基于强化学习的采掘路径规划、多层级灾害预警体系构建,以及可自我更新的矿山知识图谱系统,这些创新正在推动传统矿业向数字化、智能化方向转型。

weixin_29061531的博客 222

Power Automate实战:用SharePoint REST API批量处理列表数据(附JSON解析技巧)

本文深入探讨了如何利用Power Automate调用SharePoint REST API实现列表数据的批量自动化处理。文章详细解析了API的协同工作原理、高效的数据获取与筛选技巧,并重点分享了JSON数据解析的核心难点与实战解决方案,旨在帮助企业用户构建稳定可靠的数据处理流程,提升运营效率。

coffee的博客 769

PHP讲解设计模式:单例模式

单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。单例模式通常用于那些需要控制资源访问的场景,比如数据库连接、配置文件读取等。

软件架构师笔记 1544

保姆级教程:用ROS2 Humble和Nav2从零搭建一个能自主导航的机器人小车(含SLAM建图与避障)

本文提供了一份详细的保姆级教程,指导如何使用ROS2 Humble和Nav2从零搭建一个具备自主导航功能的机器人小车,包括SLAM建图与避障。教程涵盖了硬件组装、ROS2环境配置、URDF模型创建、SLAM建图实战、Nav2导航栈配置以及系统集成调试等关键步骤,适合机器人开发初学者和进阶开发者。

weixin_30329623的博客 490

Laravel Facade 完全指南:深入理解与实践

Laravel Facade 核心解析与实践指南 Facade 是 Laravel 的核心特性,通过静态接口访问容器服务,简化依赖调用。文章详细解析了: 概念本质:Facade 是服务容器的静态代理,不包含核心逻辑但转发调用 应用场景:展示了 Cache、DB 等内置 Facade 的典型用法 自定义实现:分步演示创建 PaymentService 及其 Facade 的过程 底层原理:通过 __callStatic 魔术方法实现服务解析与方法转发 开发建议:对比了 Facade 与依赖注入的适用场景,强调

Tekin 是深耕技术 20 年的全栈实战派专家,精通 Go/Python/Java 等多语言开发。博客专注技术原理与实战结合,深度解析 Python 高阶编程、Go 语言架构、数据库优化等硬核内容。涵盖并发编程、机器学习、云原生等前沿领域,通过真实案例拆 1442

超分算法 SwinIR: Image Restoration Using Swin Transformer

这篇文章结构比较简单,如果看过Swin-Transformer的话就没什么难点了。作者引入Swin-T结构应用于低级视觉任务,包括图像超分辨率重建、图像去噪、图像压缩伪影去除。网络由一个浅层特征提取模块、深层特征提取模块、重建模块构成。重建模块对不同的任务使用不同的结构。浅层特征提取就是一个3×3的卷积层。深层特征提取是k个RSTB块和一个卷积层构成。RSTB(Res- SwinIR: Image Restoration Using Swin Transformer[ICCV 2021]Abstract1.

qq_45122568的博客 1万+

Chamfer Loss

ChamferLoss是一种常用于3D点云(pointcloud)处理的损失函数,特别是在点云生成和对齐任务中。它的目的是度量两个点集之间的相似度,特别是在点云重建、配准或生成等任务中,常用于优化模型使得生成的点云更接近真实的点云。

夜空中明亮的星的专栏 455

laravel之facade门面模式解释

facades的文档在laravel文档核心框架下,想来也是很重要;今天偶然看到一个对门面模式的解释,我觉得超级简单就转载一下以作保存 门面,当然就是你家楼下的门面。 你去一家面馆(门面),要了份西红柿鸡蛋面,你的过程(一般来说)是这样: 1.找个位置坐下 2.看下菜单,喊道:“老板来碗西红柿鸡蛋面”! 3.老板说:“好嘞,稍等”,你坐等。。。 4.吃完,抹嘴,付钱(脸...

xf-阿飞大大 1845

海康威视嵌入式最全面试题及参考答案(3万字长文)

主营业务:提供包括前端摄像头、后端存储设备、显示控制设备等在内的全方位视频监控解决方案。市场地位:在全球范围内享有较高的市场份额,在安防领域具有较强的竞争力。技术创新:持续投入研发,拥有多项核心技术和专利,特别是在视频处理算法、人工智能等方面取得了显著成果。社会责任:积极参与公共安全项目,为智慧城市、交通管理等领域提供技术支持和服务。国际业务:除了国内市场外,海康威视的产品和服务也销往全球多个国家和地区。面向对象编程。

大模型大数据攻城狮的专栏 1764

Laravel 创建自己的 Facade(转载)

Laravel 创建自己的 Facade(转载) 原文:https://segmentfault.com/a/1190000009759459 前言 laravel 提供了一个灵活的模式,那就是 facade 。框架内部的 DB、Auth、File 等功能也有相关的 facade 实现。那么,该如何写自己的 facade 呢? Facade 是什么? 首先,facade 并不是 laravel 独有的东西,它就是设计模式中的外观模式(Facade)。 当然,这里就不长篇大论去讨论外观模式的定义了。这篇文章写

zhuimengchizixinwx的博客 452

COMSOL介电弹性体数值仿真指南:预拉伸圆形DEA的稳态变形分析(II)

本期博客是《COMSOL介电弹性体数值仿真指南》系列博客中的一期。聚焦于介电弹性体驱动器(DEA)中最为经典的预拉伸圆形DEA驱动器构型,对其在COMSOL平台中的具体建模步骤进行介绍与讨论。

忘了面孔的Batou 353

PyTorch深度学习实战(29)——变分自编码器(Variational Autoencoder, VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。

盼小辉丶的博客 1万+

解读Laravel,看PHP如何实现Facade?

刚刚开始学Laravel就会接触到路由 1 2 3 Route::get('/', function () {     return view('welcome'); }); 后来笔者一本正经的去读过Route类的代码,惊讶的发现并没有get这个方法,之后了解到Laravel用了Facad

duzanuolu的专栏 886

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Laravel门面的艺术:打造自定义门面的终极指南

使用Artisan命令行工具创建一个新的门面类。这将在目录下创建一个新的门面类。在门面类中定义静态方法,这些方法将被用于访问底层服务。// 返回服务容器中的key在门面方法中,可以注入依赖项,例如其他门面或服务。自定义门面是Laravel提供的一个强大工具,它可以帮助开发者以一种更加优雅和简洁的方式访问应用中的服务。通过本文的介绍,你应该对如何在Laravel中实现自定义的门面有了更深入的理解。记住,合理利用门面,可以使你的代码更加模块化和易于维护。

2401_85439108的博客 932

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Laravel框架源码解析:核心架构与设计模式

依赖注入和服务容器是现代PHP框架的核心设计模式,通过控制反转实现松耦合架构。Laravel框架的服务容器(IoC Container)是其架构精髓,结合门面(Facade)模式提供简洁的静态接口。理解这些机制不仅能优化HTTP请求处理流程和数据库查询构建,还能提升ORM使用效率。本文以Laravel 9.x为例,深入解析服务绑定与解析、中间件管道、Eloquent ORM等核心组件的实现原理,帮助开发者从源码层面掌握框架运行机制,解决实际开发中的性能优化和调试问题。

chuannaoxuan4674的博客 402

什么是Laravel 5.0外墙?

用Martin Fowler的话最好地定义软件设计模式: 模式提供了一种以参考格式呈现设计建议的机制。 软件设计是一个巨大的主题,当遇到设计问题时,您必须能够专注于尽可能解决问题的事物。 采用设计模式的代码易于理解,维护和扩展。 本教程的目的是在Laravel中推广外观。 什么是立面模式? 根据“四人帮”的定义, 立面设计模式是一种结构模式,它定义了到更复杂子系统的简化接口。 该模...

代码教主 173

php laravel 面试,当面试关问你Laravel Facade,说出这几个关键词就可以

原标题:当面试关问你Laravel Facade,说出这几个关键词就可以概念constructor方法__set方法property属性传值门面(外观)设计模式定义,facade发音[fəˈsɑːd]依赖注入(不需要所有的都需要手动new N多次)依赖注入容器,比如springIoc或者Laravel App(容器来自动管理依赖和实例化对象)php相关语法及特性给类起个别名: class_alia...

weixin_39553753的博客 129

Laravel的核心概念

工欲善其事,必先利其器。在开发Xblog的过程中,稍微领悟了一点Laravel的思想。确实如此,这篇文章读完你可能并不能从无到有写出一个博客,但知道Laravel的核心概念之后,当你再次写起Laravel时,会变得一目了然胸有成竹。PHP的生命周期万物皆有他的生命周期。熟悉Android的同学一定熟悉Android最经典的Activity的生命周期,Laravel 也不例外,Laravel应用程序也

稻草人技术博客 1万+

laravel5.5门面

Facades为应用程序的 服务容器 中可用的类提供了一个 静态接口 。 最直观的好处 就是需记住必须手动注入或配置的长长的类名。因此有人也理解Facades就是一个“快捷别名” 怎么变得更快捷呢? # 使用make 去访问注册日志对象的info方法 $container->make('log')->info('message') # 使用arrayaccess的方式 $cont...

weixin_30332705的博客 167

Laravel 使用 Facade 来封装框架的核心功能,使开发者能够以更直观的方式调用这些功能。

Laravel 使用 Facade 封装框架的核心功能,提供了一个简洁、直观的接口,使开发者能够快速调用复杂的功能。理解 Facade 的工作原理及其优缺点,可以帮助开发者更好地利用它的优势,同时避免潜在的问题。

长风破浪会有时的博客 509

深入解析Laravel源码:从启动流程到核心架构

服务容器和中间件系统是现代PHP框架的核心技术组件。服务容器通过控制反转(IoC)实现依赖管理,提供灵活的绑定解析机制;中间件系统基于装饰者模式构建,形成洋葱模型处理HTTP请求。Laravel框架通过优雅的架构设计,将这两项技术深度整合,为开发者提供高效的开发体验。通过源码分析可以掌握框架底层实现原理,不仅能解决复杂业务场景下的调试问题,还能学习到模块化设计和扩展点机制。本文以Laravel为例,详细解读从入口文件到服务容器、中间件系统的完整实现过程,帮助开发者深入理解PHP框架设计思想。

weixin_30520015的博客 417
下一篇: 对laravel5概念的理解 -- 观察者模式(Event)
Emily_68
博客等级 码龄17年 3粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值