日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

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

發布時間:2025/3/15 php 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 这两年多我写PHP业务代码的方式是如何进化的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

曾今

誰都有過迷茫期,下面是我開始PHP開發中,不斷改變的代碼組織方式。

  • 初期:所有代碼一股腦控制器controller

    • 曾今只是簡單的理解MVC
  • 中期:業務代碼抽象一部分到模型層model

    • 開始覺得model層是否該做點什么了
  • 后期:業務代碼控制器,模型層只寫db的curd方法

    • 復雜的業務代碼使controller過于的龐大和難以維護

當下

汲取以前的碼碼體驗,我目前的碼碼方式做了如下改變:

更合理的分層

  • 控制器暴露資源
  • 業務代碼到邏輯層
  • 模型層只寫db的curd方法

度的把握,凡事都是靈活的,也不都是這樣,認為足夠簡單的邏輯還是“業務代碼控制器,模型層只寫db的curd方法”。

依賴注入,懶加載,前置中間件

  • 依賴注入容器很重要,配上懶加載,減少代碼,解耦依賴,提升性能

    • 關于容器可以參考我之前簡單的實現http://easy-php.tigerb.cn/#/?...
  • 前置中間件注入我們依賴的類

    • 我實現的簡單的前置中間件,示例掛載了一個gateway到控制器之前http://easy-php.tigerb.cn/#/?...

組件化代碼

首先我們需要利用composer來拆分和組件化我們的代碼,業務中簡單的composer require即可復用我們的業務代碼。但是有一個問題如果使用?http://www.xsjdy.org?需要把代碼開源出去,和業務無關的工具類還好說,而且開源還是個好事情,但是和業務相關比較敏感的組件就有問題了,所以我們需要搭建一個私有的packagist, 私有packagist示例。

我選擇了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代碼:

  • composer組件化代碼,依賴開源或私有packagist
  • 前置中間件懶加載的方式依賴注入composer require的組件
  • 控制器暴露資源 新視覺影院

    • 優雅的參數校驗工具類
    • 使用try...catch...finally...
    • 響應盡可能的符合restful思想,比如error code:400,404,500...
  • 業務代碼到邏輯層(也不一定)

    • 復雜的業務代碼先建模再寫,建??梢越M織好我們的代碼并且可以運用一些設計模式,關于建??梢詤⒖嫉奈业奈恼翽HPer月工作總結之觀察者&裝飾器模式
  • 模型層只寫db的curd方法

    • 不可撼動的原則

轉載于:https://www.cnblogs.com/xinshijue6080/p/7763806.html

總結

以上是生活随笔為你收集整理的这两年多我写PHP业务代码的方式是如何进化的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。