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

2017-10-31 11:59:50 +08:00
 TIGERB

曾今

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

当下

汲取以前的码码体验,我目前的码码方式做了如下改变:

更 合理的分层

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

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

组件化代码

首先我们需要利用 composer 来拆分和组件化我们的代码,业务中简单的composer require即可复用我们的业务代码。但是有一个问题如果使用 https://packagist.org 需要把代码开源出去,和业务无关的工具类还好说,而且开源还是个好事情,但是和业务相关比较敏感的组件就有问题了,所以我们需要搭建一个私有的packagist, 私有 packagist 示例:http://packagist.tigerb.cn/

我选择了Satis搭建私有的 packagist,安装步骤如下:

step 1:

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

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"
    }
}

总结

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

结语

不足还有很多,在这里只是把自己的想法分享出来,好的大家可以借鉴,不好的希望大家多多指正。

THX~

3970 次点击
所在节点    程序员
12 条回复
yimaneilicj
2017-10-31 14:29:11 +08:00
学习
vescape920
2017-10-31 16:34:06 +08:00
感觉应该写一下具体的转变过程 怎么发生这样转变的想法 中间那段组件化我觉得不必要贴代码 这不是教程贴
generation
2017-10-31 18:39:00 +08:00
composer 只要本地 git 仓库就可以了
TIGERB
2017-10-31 19:00:04 +08:00
@vescape920 说的对,没毛病~
TIGERB
2017-10-31 19:00:21 +08:00
@yimaneilicj 互相学习~
cnwtex
2017-10-31 19:03:25 +08:00
一句话总结:"以前我用 ThinkPHP, 现在学会了 Lavarel"
crystom
2017-10-31 19:11:31 +08:00
@cnwtex 不太相同,laravel 的 active record 不强制,但是可以说有意让开发者把逻辑层代码写到 model 类里
carlclone
2017-10-31 19:14:41 +08:00
@cnwtex 握手,agree
Mine
2017-10-31 19:14:58 +08:00
@cnwtex #6 这话没毛病。
cxbig
2017-10-31 19:53:24 +08:00
差不多。方向没有问题。
HYSS
2017-10-31 19:58:41 +08:00
@cnwtex 个人还是看好 SF Laravel 太随意了 缺乏约束
ylsc633
2017-11-01 09:53:48 +08:00
@cnwtex 握手,没毛病

记得有个文章说建议 中小型项目,加入 repostiroy 和 service 层.. 然后通过依赖注入,灵活调用...

好像大约就是这个.. http://laravelacademy.org/post/3063.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/402226

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX