国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

這兩年多我寫PHP業務代碼的方式是如何進化的

qqlcbb / 1265人閱讀

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

曾今

誰都有過迷茫期,下面是我開始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即可復用我們的業務代碼。但是有一個問題如果使用 https://packagist.org 需要把代碼開源出去,和業務無關的工具類還好說,而且開源還是個好事情,但是和業務相關比較敏感的組件就有問題了,所以我們需要搭建一個私有的packagist, 私有packagist示例:http://packagist.tigerb.cn/,具體搭建步驟見文末。

總結

目前讓我接手一個項目我會從如下幾個方面去組織我的php代碼:

composer組件化代碼,依賴開源或私有packagist

前置中間件懶加載的方式依賴注入composer require的組件

控制器暴露資源

優雅的參數校驗工具類

使用try...catch...finally...

響應盡可能的符合restful思想,比如error code:400,404,500...

業務代碼到邏輯層(也不一定)

復雜的業務代碼先建模再寫,建模可以組織好我們的代碼并且可以運用一些設計模式,關于建模可以參考的我的文章PHPer月工作總結之觀察者&裝飾器模式

模型層只寫db的curd方法

不可撼動的原則

結語

不足還有很多,在這里只是把自己的想法分享出來,好的大家可以借鑒,不好的希望大家多多指正。

THX~

附錄

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

掃面下方二維碼關注我的技術公眾號,及時為大家推送我的原創技術分享

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25985.html

相關文章

  • 回顧我 2016 -- my2016()

    摘要:距離的鐘聲響起,還有一個小時。由于工作緣故,此時還在加班。仔細思考,一切都是自己埋下的服務器隱患。工作不忙,給了很多空余時間,有了充分的時間來接外包單和學習,但依舊沒有改變我拮據的現狀。 php echo happy new year!; header(距離2017的鐘聲響起,還有一個小時。由于工作緣故,此時還在加班。 仔細思考,一切都是自己埋下的服務器隱患。, ...

    SimpleTriangle 評論0 收藏0
  • 程序員天花板

    摘要:年薪百萬是很多程序員的目標甚至夢想。今天,就借用知乎推送給我的話題程序員如何突破職業天花板談一談我的心路歷程,其實也代表著我個人職場觀的進化過程。 年薪百萬是很多程...

    legendmohe 評論0 收藏0
  • 架構

    摘要:分布式架構實踐負載均衡在網站創立初期,我們一般都使用單臺機器對臺提供集中式服務,但是隨著業務量越來越大,無論是性能上還是穩定性上都有了更大的挑戰。就鹿晗宣布戀情導致微博宕機事件淺談大型網站高可用性架構中午吃飯刷著刷著微博發現微博突然掛了。 分布式架構實踐——負載均衡 在網站創立初期,我們一般都使用單臺機器對臺提供集中式服務,但是隨著業務量越來越大,無論是性能上還是穩定性上都有了更大的挑...

    Pink 評論0 收藏0

發表評論

0條評論

qqlcbb

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<