这两年多我写PHP业务代码的方式是如何进化的

曾今

谁都有过迷茫期,下面是我开始PHP开发中,不断改变的代码组织方式。php

  • 初期:全部代码一股脑控制器controller
    • 曾今只是简单的理解MVC
  • 中期:业务代码抽象一部分到模型层model
    • 开始以为model层是否该作点什么了
  • 后期:业务代码控制器,模型层只写db的curd方法
    • 复杂的业务代码使controller过于的庞大和难以维护

当下

汲取之前的码码体验,我目前的码码方式作了以下改变:nginx

更合理的分层

  • 控制器暴露资源
  • 业务代码到逻辑层
  • 模型层只写db的curd方法

度的把握,凡事都是灵活的,也不都是这样,认为足够简单的逻辑仍是“业务代码控制器,模型层只写db的curd方法”。git

依赖注入,懒加载,前置中间件

  • 依赖注入容器很重要,配上懒加载,减小代码,解耦依赖,提高性能
  • 前置中间件注入咱们依赖的类

组件化代码

首先咱们须要利用composer来拆分和组件化咱们的代码,业务中简单的composer require便可复用咱们的业务代码。可是有一个问题若是使用 packagist.org 须要把代码开源出去,和业务无关的工具类还好说,并且开源仍是个好事情,可是和业务相关比较敏感的组件就有问题了,因此咱们须要搭建一个私有的packagist, 私有packagist示例:packagist.tigerb.cn/,具体搭建步骤见文末。github

总结

目前让我接手一个项目我会从以下几个方面去组织个人php代码:web

  • composer组件化代码,依赖开源或私有packagist
  • 前置中间件懒加载的方式依赖注入composer require的组件
  • 控制器暴露资源
    • 优雅的参数校验工具类
    • 使用try...catch...finally...
    • 响应尽量的符合restful思想,好比error code:400,404,500...
  • 业务代码到逻辑层(也不必定)
  • 模型层只写db的curd方法
    • 不可撼动的原则

结语

不足还有不少,在这里只是把本身的想法分享出来,好的你们能够借鉴,很差的但愿你们多多指正。json

THX~设计模式

附录

Satis搭建私有的packagist过程,安装步骤以下:bash

step 1:restful

composer create-project composer/satis:dev-master --keep-vcs && cd satismvc

step 2:

touch satis.json

satis.json文件的内容以下

{
  "name": "packaglist-tigerb",
  "homepage": "http://packaglist.tigerb.cn",
  "repositories": [
    { "type": "vcs", "url": "http://github.com/tigerb/easy-mipush" },
    { "type": "vcs", "url": "http://github.com/easy-framework/easy-router"}
  ],
  "require-all": true
}
复制代码

step 3:

php bin/satis build ./satis.json <你的web servser项目目录,好比个人路径/mnt/www>

step 4:

配置nginx server 配置,重启nginx便可

如何使用?

简单的配置composer.json便可,增长新的repositories地址,具体示例配置以下:

{
    "name": "tigerb/test",
    "authors": [
        {
            "name": "TIGERB",
            "email": "tigerbcode@gmail.com"
        }
    ],
    "repositories":[
        {"type":"composer", "url": "http://packagist.tigerb.cn"}
    ],
    "config": {
        "secure-http": false
    },
    "require": {
        "tigerb/easy-mipush": "^0.1.0"
    }
}
复制代码

相关文章
相关标签/搜索