php项目怎么分配,php项目目录的合理划分和Pipeline 组件的使用场景

php项目目录的合理划分和Pipeline 组件的使用场景

这是一篇迟到的文章,很早之前就一直想写了,可是经验不足有些地方理解的不透侧,当然,现在这篇文章可能也是浅尝辄止,希望不要喷我

开篇

首先,可以先导读一下如下这篇文章,有助于提升一下代码质量

单一职责原则

通俗点介绍则是,一个功能为一个功能所做事情。

例如,我们需要获取用户信息,那简而言之,编写的 getUserInfo 则只用它来做一件东西。

当然,这只是一个方法,如果一个类呢,我们需要怎么来定义

如今大家遵循的大多数是 mvc 规范,现在的开发流程下,大概v,也就是视图层早已经消失殆尽

mc的关系如何处理呢,我建议大概是如下几种

-app

--Model // 模型层

--Controller // 控制器层

--Traits

--Stores // 处理类

--Tools // 工具类

--Routers // 扩展路由

模型和控制器就不需要多说了

Traits

这里主要存放一些复用的公共函数方法,例如获取器,验证器等等,

Stores

用来存放模型或者控制器不方便写的一些代码,例如返回一个商品信息,需要针对商品清单从其他数据库或则数据表进行补全完整的信息

例如,购买人次,成交额等等,这个时候,这些东西既不适合交给控制器也不适合交给模型层

Tools

工具类,这里存放一些工具方法,例如处理某个数据集的公用或者某个组件功能需要使用的方法

常见的有响应方法,打日志的方法等等

Routers

路由扩展文件,这个文件的意义就在于,当系统或者功能庞大起来之后,路由将会变得非常不好管理,基本上在后台管理中,一个功能可能就产生5个左右路由

这个时候就需要其将路由文件拆分开来

以上的操作,当然不能一概而论,应当适当的针对业务场景进行处理,例如简单的一个后台,管理用户的功能就无需如此繁杂。当功能越来越多而不好管理的时候才能适当的发挥它的最大作用

重要篇

Pipeline 组件 是什么

这是一个非常有趣的功能,大家应该或多或少的使用过中间件,是不是从来没有过去了解中间件呢

其实,中间件背后的逻辑及其实现也就是 Pipeline 的简化版

中文寓意是通道的意思

使用场景

上代码:

1460000020886696

1460000020886697

1460000020886698

如上,我们发现,第一张图我们代码非常非常少,最后一张图,返回的数据字段非常非常多,而查询语句也并没有查询多少东西

使用场景大概如下

有一批商品信息,我们只知道他的商户id和商品id (product表)

由此,我们需要给前端返回

(订单成交额 order表)

(分类信息 tag表)

(成交用户属性信息 user表)

(优惠信息 coupone表)

这个时候,按照以往的逻辑,我们有几种解决方案

foreach

foreach + 类处理

大概第二种方法用的人会最多,循环商品信息,当if需要成交额当时候就去成交额的表中查询,然后给补齐上

第一种方法就忽略吧,都是写在一个方法里面来foreach, 极度不推荐

这个时候就 Pipeline 它上场了,通过传导数据给它,在 Pipeline 的dispatcher中添加类

例如补齐订单成交额,则可以添加 Order::Class 等等

最大的好处,既是,将功能与功能之间耦合开来,从而即便后续我们需要针对订单成交额的代码逻辑进行修复,也不需要去修改设计到这一整块逻辑的代码

好处

可读性强

符合单一职责原则

耦合度低

php学习交流群 : 735713840

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的 pipeline 文件示例,用于发布上线 PHP 项目: ``` pipeline { agent any environment { REMOTE_HOST = "your-remote-host" REMOTE_USER = "your-remote-user" REMOTE_DIR = "/path/to/remote/dir" LOCAL_DIR = "/path/to/local/dir" } stages { stage('Checkout') { steps { checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'your-git-repo-url']]]) } } stage('Install Dependencies') { steps { sh 'composer install' } } stage('Build') { steps { sh 'zip -r your-project-name.zip *' } } stage('Deploy') { steps { sshPublisher(publishers: [sshPublisherDesc(configName: 'your-ssh-server', transfers: [sshTransfer(execCommand: "unzip -o your-project-name.zip -d ${REMOTE_DIR} && rm your-project-name.zip", execTimeout: 120000, flatten: false, remoteDirectory: REMOTE_DIR, remoteDirectorySDF: false)])]) } } } } ``` 该 pipeline 文件包含以下步骤: 1. `Checkout` 阶段:从 Git 仓库中拉取代码。 2. `Install Dependencies` 阶段:安装 PHP 项目的依赖包。 3. `Build` 阶段:将 PHP 项目打包成一个压缩文件,以便在部署时使用。 4. `Deploy` 阶段:将打包好的 PHP 项目上传到远程服务器,并解压缩到指定目录中。 其中,需要根据实际情况配置以下环境变量: - `REMOTE_HOST`:远程服务器的 IP 或域名。 - `REMOTE_USER`:远程服务器的用户名。 - `REMOTE_DIR`:远程服务器上部署 PHP 项目目录。 - `LOCAL_DIR`:本地 PHP 项目的根目录。 在使用pipeline 文件前,需要先在 Jenkins 中配置好 Git 仓库、SSH 连接和远程服务器信息。同时,需要在远程服务器上安装好 PHP 运行环境和相关依赖库,以确保 PHP 项目能够正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值