首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP实现代码分层设计实践与总结

简介 见过很多PHP开发者的代码,在代码分层上面都不是很注重。一般都是控制器负责所有的业务逻辑,在控制器中调用模型做数据操作、验证数据也在控制器中等等情况。这样的做法怎么说呢?...本文分享一些个人的代码分层想法,存在不足的地方,希望大家多多提出一些宝贵建议。 文章底部有代码示例连接,可以直接通过代码查看或许更加方便。...相关技术 Laravel资源控制器、Laravel模型、PHP对象接口 实现思路 大致实现的思路如下: [Snipaste_2021-03-20_22-29-16] // uml图 @startuml...在api.php路由文件定义如下格式: <?...这里总结一下设计这一的思路。 使用资源路由,我们直接定义一个路由规则,增删改查等接口方式,我们就自动实现并且能够规范团队中的接口,同时也符合RESTful API的规范。

2.5K10

如何优雅地设计数据分层

0x00 前言 一、文章主题 本文主要讲解数据仓库的一个重要环节:如何设计数据分层! 其它关于数据仓库的内容可参考之前的文章。...文章的结构如下: 为什么要分层?这个问题被好几个同学质疑过。因此分层的价值还是要说清楚的。 分享一下经典的数据分层模型,以及每一层的数据的作用和如何加工得来。...分享两个数据分层设计,通过这两个实际的例子来说明每一层该怎么存数据。 给出一些建议,不是最好的,但是可以做参考。...0x03 举个例子 网上的例子很多,就不列了,只举个笔者早期参与设计的数据分层例子。分析一下当初的想法,以及这种设计的缺陷。上原图和内容。 当初的设计总共分了 6 层,其中去掉元数据后,还有5层。...0x04 如何更优雅一些 前面提到的一种设计其实相对来讲已经很详细了,但是可能层次会有一点多,而且在区分一张表到底该存放在什么位置的时候可能还有不小的疑惑。

5K71
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数仓分层设计

    目录 一、分层目的 二、分层架构概览 三、详细分层设计 1.ODS (opreational data store) 2.DWD(data warehouse detail)  3.DIM(dimension...)  4.DWS(data warehouse service)  5.ADS(Application Data Service) ---- 一、分层目的 数仓分层的目的是:逐层解耦,减少重复计算,降低烟囱式开发...二、分层架构概览 三、详细分层设计 1.ODS (opreational data store) 存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。...设计时注意点: 1.不重不漏,确保每个表都在一个域里,且只在一个域里(精确定位) 2.每个域下都可以根据需要再分子域,不限定层级(最自由方便) 3.如果分子域就不能放表,表只放在最底层的域中(树状目录管理时更方便

    47510

    Dubbo分层整体设计概述

    我们先从下图开始简单介绍Dubbo分层设计概念: (引用自Duboo开发指南-框架设计文档) 如图描述Dubbo实现的RPC整体分10层:service、config、proxy、registry、cluster...serialize:抽象序列化模型,兼容多种序列化框架,包括:fastjson、fst、hessian2、kryo、kryo2、protobuf等,通过序列化支持跨语言的方式,支持跨语言的rpc调用; Dubbo这么分层的目的在于实现层与层之间的解耦...RPC调用过程 接下来结合上图简单描述一次完整的rpc调用过程: 从Dubbo分层的角度看,详细时序图如下,蓝色部分是服务消费端,浅绿色部分是服务提供端,时序图从消费端一次Dubbo方法调用开始,到服务端本地方法执行结束...(引用自Dubbo官方文档) 1.2 Dubbo服务的注册和发现流程 下图出自开发指南-框架设计-引用服务时序,主要流程是:从注册中心订阅服务提供者,然后启动tcp服务连接远端提供者,将多个服务提供者合并成一个...下图出自开发指南-框架设计-暴露服务时序,主要流程是:创建本地服务的代理Invoker,启动tcp服务暴露服务,然后将服务注册到注册中心。

    67830

    源码解读Dubbo分层设计思想

    一、Dubbo分层整体设计概述 我们先从下图开始简单介绍Dubbo分层设计概念: [0d75865675664a43abf4a003d4a62281~tplv-k3u1fbpfcp-zoom-1.image...] (引用自Duboo开发指南-框架设计文档) 如图描述Dubbo实现的RPC整体分10层:service、config、proxy、registry、cluster、monitor、protocol、...serialize:抽象序列化模型,兼容多种序列化框架,包括:fastjson、fst、hessian2、kryo、kryo2、protobuf等,通过序列化支持跨语言的方式,支持跨语言的rpc调用; Dubbo这么分层的目的在于实现层与层之间的解耦...RPC调用过程 接下来结合上图简单描述一次完整的rpc调用过程: 从Dubbo分层的角度看,详细时序图如下,蓝色部分是服务消费端,浅绿色部分是服务提供端,时序图从消费端一次Dubbo方法调用开始,到服务端本地方法执行结束...[eceb448fd92d4107b35b5bf9accb9be6~tplv-k3u1fbpfcp-zoom-1.image] 下图出自开发指南-框架设计-暴露服务时序,主要流程是:创建本地服务的代理Invoker

    47600

    代码分层设计实践与总结

    简介 见过很多PHP开发者的代码,在代码分层上面都不是很注重。一般都是控制器负责所有的业务逻辑,在控制器中调用模型做数据操作、验证数据也在控制器中等等情况。这样的做法怎么说呢?...本文分享一些个人的代码分层想法,存在不足的地方,希望大家多多提出一些宝贵建议。 文章底部有代码示例连接,可以直接通过代码查看或许更加方便。...相关技术 Laravel资源控制器、Laravel模型、PHP对象接口 实现思路 大致实现的思路如下: ?...在api.php路由文件定义如下格式: <?...这里总结一下设计这一的思路。 使用资源路由,我们直接定义一个路由规则,增删改查等接口方式,我们就自动实现并且能够规范团队中的接口,同时也符合RESTful API的规范。

    1.2K30

    微服务,分层设计与领域驱动设计(DDD)?

    微服怎么拆,最经典的就是分层设计了。分层架构如此经典,以至于成为我们每个程序员的标配了。随着服务的更加复杂,基于领域的设计就显得更加有必要了,这个时候分层设计和领域设计该怎么权衡?...其实准确的说,分层设计和领域设计不在一个维度,没有必然的联系。但是在领域驱动设计中也有分层的思想。 画外音:小孩子才做选择,成年人都要!...分层设计 对于大部分互联网公司来说,后端架构分为三层:网关层、业务逻辑层、数据访问层。 ? (1)网关层:负责提供对外的HTTP服务或者其他应用服务。...领域驱动设计的经典分层 目前似乎没有一家公司真正严格按照DDD进行项目代码设计。根据DDD理论,领域建模主要发生在领域服务层,各领域模块都应该是高内聚低耦合的,具有清晰的业务边界。...总结: (1)领域设计一定要有清晰的功能边界 (2)领域拆分并不是一步到位的,应当根据实际情况逐步展开 (3)领域拆分并不是一成不变的,应当具体情况具体分析 任何脱离业务的架构设计都是耍流氓

    1.3K30

    APP分层架构设计随想

    互联网分层架构的本质,是数据的移动。 互联网分层架构演进的核心原则:让上游更高效的获取与处理数据(复用),让下游能屏蔽数据的获取细节(封装)。 不管数据怎么移动,最终都会汇聚到客户端。...服务端的分层架构设计已经讲了很多,客户端的分层架构设计应该怎么玩呢,服务端的分层架构设计是否有能够借鉴的地方呢,今天和大家简单聊一聊。...是少数几个同学的,没有提前做规划 后期代码越来越臃肿,不敢动,一动怕影响功能,怕出问题,怕担责任 项目中,是以功能界面进行编码划分的,一个同学会同时负责MVC三部分编码,加之项目压力又大,既然是一个人写,就没必要分层了...还得改别人的代码,算了,还是拷贝一份吧 … 不管历史原因,项目原因,个人的原因,大家都知道分层抽象,代码复用是正确的,那有什么方案能够将这个分层抽象落地,从后端的分层架构中是否有可借鉴的地方呢?...,是数据的移动,分层架构封装复用的思想,前后端有共通的地方。

    1.7K40

    Golang分布式设计模式之-----分层设计

    (来自分布式算法导论) 1、缺乏全局状态知识 2、缺乏全局时间帧 3、非确定性          这三大特点也成为分布式系统设计的难点。也正是如此,分布式系统的设计比常规的集中式系统要难的多。...有了golang语言,我们的可执行程序,也可以设计成分布式。一个可执行程序设计成分布式,这种分布式我们成为单体分布式。这种犹如,个体,存在着很多的部件。         ...那么OSI7层模型与tcp/ip模型都属于分层设计模式。现在我们将此设计经验。借鉴到golang语言的开发过程中。         ...进行抓包          2)传输层:对包进行解析tcp信息          3)流层:将tcp包进行组装成tcp流          4)http层:对tcp流进行识别生成相应的http信息 二、分层之后...                  传输层.Init(流层.接口函数)          4)初始化抓包层,并将传输层的接口与抓包层对接                   抓包层.Init(传输层.接口函数)          分层设计

    1.1K50

    如何利用分层测试概念设计针对性测试用例

    但是仔细想一下双 V 模型就会发现,我们缺少了概要设计(集成测试)和详细设计(单元测试)的阶段,直接进入了系统测试,而要求大家在系统测试阶段考虑单元测试和集成测试的点,确实不是每个人都能做到的,事实证明也确实如此...前段时间看的《软件测试的艺术》刚好有提到三层应用系统的分层:表示层、业务逻辑层和数据访问层,我觉得可以利用这个分层理论,让我们也可以在系统测试阶段考虑到逻辑实现和底层原理的验证。...下面我根据我们当前项目的情况,以我的角度来按这个分层分别进行举例说明。 二 先说说表示层。...所谓的业务逻辑,可以理解为集成测试或者接口测试阶段的测试对象,比如前面那个例子是调用的哪个接口实现的,如果没有调用接口,自己又是如何实现的?...五 说了这么多,有没有对前面说的分层有更好的理解呢?有没有可能借助这个理论让我们的用例更深入也更有针对性?

    91730

    DDD领域驱动设计实战-分层架构

    那DDD分层架构又如何? 1 DDD分层架构 1.1 分层架构的基本原则 每层只能与位于其下方的层发生耦合。...比如此时领域层中的一些技术实现令人头疼: 违背分层架构的基本原则 难以编写测试用例 何解? 使用依赖反转设计原则:低层服务(如基础设施层)应依赖高层组件(比如用户界面层、应用层和领域层)所提供接口。...三层架构如何演进到DDD分层架构? 由于层间松耦合,我们可以专注于本层的设计,而不必关心其它层,也不必担心自己的设计会影响其它层。可以说,DDD成功地降低了层与层之间的依赖。...三层架构数据访问采用DAO方式;DDD分层架构的数据库等基础资源访问,采用了仓储(Repository)设计模式,通过依赖倒置实现各层对基础资源的解耦。 关于仓储。...参考 《实现领域驱动设计》 DDD分层架构:有效降低层与层之间的依赖

    1.9K42

    【说站】php如何设计队列

    php如何设计队列 1、需要队列程序,提供加入队列接口和取队列接口。 2、需要存储队列、文件或数据库。 3、需要定期程序取出队列并执行。 4、其它扩展功能:优先级、日志、定时等。...实例 |–db.php //数据库操作 |–db.sql //建立队列需要用到的基本表结构 |–doQueue.php //执行队列任务 |–Queue.class.php //队列核心业务在这里定义,...包括将任务加入队列,读队列,更改队列任务状态 |–sendMsg.php //队列要实现具体任务的业务接口,比如现有系统的发送消息的接口,这里例子中因为将此队列程序和现有系统系统集成,用写入日志来演示...以上就是php设计队列的介绍,希望对大家有所帮助。...更多php学习指路:php教程

    38020

    转-Golang分布式设计模式之-----分层设计

    (来自分布式算法导论) 1、缺乏全局状态知识 2、缺乏全局时间帧 3、非确定性 这三大特点也成为分布式系统设计的难点。也正是如此,分布式系统的设计比常规的集中式系统要难的多。...有了golang语言,我们的可执行程序,也可以设计成分布式。一个可执行程序设计成分布式,这种分布式我们成为单体分布式。这种犹如,个体,存在着很多的部件。...那么OSI7层模型与tcp/ip模型都属于分层设计模式。现在我们将此设计经验。借鉴到golang语言的开发过程中。...进行抓包 2)传输层:对包进行解析tcp信息 3)流层:将tcp包进行组装成tcp流 4)http层:对tcp流进行识别生成相应的http信息 二、分层之后...传输层.Init(流层.接口函数) 4)初始化抓包层,并将传输层的接口与抓包层对接 抓包层.Init(传输层.接口函数) 分层设计

    845130

    我对软件分层设计的思考

    什么是分层设计?它有何好处? ? 图片 分层设计将软件划分成若干层,每一层只解决一部分问题,通过所有层的协作来完成整体目标。...分层设计带来的好处: 降低了系统软件的复杂度,将一个复杂问题通过分解,分而治之 功能的复用和封装 2. 计算机语言的发展 ?...内核功能层 :这一层完成各种实际的功能,我们知道 OS 主要负责资源管理、内存、进程这些资源,物理内存如何申请、释放,进程如何调度。具体来说进程管理、内存管理、中断管理、设备管理。...这时候最好的设计分层,当操作系统运行在不同的硬件平台时,就只需要修改硬件平台相关层代码,实现操作系统的高可移植性。 操作系统有两个关键设计: 内核接口层区分用户态与内核态,来保护硬件资源受限访问。...小结 Linux 中的内核硬件层设计、MMU、CPU 与 IO 外设通信设计处处体现了分层 / 中间层的设计思想。 4.

    67520

    分层次的电路设计方法

    ⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。...文章目录 分层次的电路设计方法 设计方法 全加器电路设计举例 一位半加器的描述 一位全加器的描述 四位全加器的描述 模块实例引用语句 分层次的电路设计方法 设计方法 使用自下而上的方法(bottom-up...全加器电路设计举例 一位半加器的描述 //************ 一位半加器的描述 ************ module halfadder (S,C,A,B); //IEEE 1364—1995...实例引用的子模块可以是一个设计好的Verilog HDL设计文件(即一个设计模块),也可以是FPGA元件库中一个元件或嵌入式元件功能块,或者是用别的HDL语言(如VHDL、AHDL等)设计的元件,还可以是...年12月 Verilog HDL数字设计与综合(第2版), Samir Palnitkar著,夏宇闻等译, 电子工业出版社, 2015年08月 Verilog HDL入门(第3版), J.

    36820

    嵌入式软件架构设计分层设计

    在实际的项目开发中,项目往往是并行开发的,也就是说硬件设计,底层软件设计,应用软件设计是同步进行的。比如说在开发板上调试模块驱动,在其他平台上调试应用再移植到目前这个平台等。...这里又涉及到如何提高嵌入式应用软件的可移植性的问题,这个问题在下一篇博文中专门讲解,敬请期待。...因此注重单片机类嵌入式软件设计是项目前期必须考虑的工作。 下面具体讲解单片机软件开发的分层设计思路。本栗子所使用的是飞思卡尔K21 MCU,IAR编译器。...本文主题是讲软件分层,也就是底层软件和应用软件分开。当然可以把底层软件生成一个静态库提供給应用。...如何实现上述思路,下面用一个具体实例讲解: 1.函数表用结构体的方式实现,结构体元素为函数指针。

    1.6K12

    我对软件分层设计的思考

    1什么是分层设计?它有何好处? ? 分层设计将软件划分成若干层,每一层只解决一部分问题,通过所有层的协作来完成整体目标。...分层设计带来的好处: 降低了系统软件的复杂度,将一个复杂问题通过分解,分而治之 功能的复用和封装 2计算机语言的发展 ?...内核功能层:这一层完成各种实际的功能,我们知道 OS 主要负责资源管理、内存、进程这些资源,物理内存如何申请、释放,进程如何调度。具体来说进程管理、内存管理、中断管理、设备管理。...这时候最好的设计分层,当操作系统运行在不同的硬件平台时,就只需要修改硬件平台相关层代码,实现操作系统的高可移植性。 操作系统有两个关键设计: 内核接口层区分用户态与内核态,来保护硬件资源受限访问。...小结 Linux 中的内核硬件层设计、MMU、CPU 与 IO 外设通信设计处处体现了分层 / 中间层的设计思想。

    36810
    领券