成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

這兩年多我寫(xiě)PHP業(yè)務(wù)代碼的方式是如何進(jìn)化的

qqlcbb / 1272人閱讀

摘要:曾今誰(shuí)都有過(guò)迷茫期,下面是我開(kāi)始開(kāi)發(fā)中,不斷改變的代碼組織方式。

曾今

誰(shuí)都有過(guò)迷茫期,下面是我開(kāi)始PHP開(kāi)發(fā)中,不斷改變的代碼組織方式。

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

曾今只是簡(jiǎn)單的理解MVC

中期:業(yè)務(wù)代碼抽象一部分到模型層model

開(kāi)始覺(jué)得model層是否該做點(diǎn)什么了

后期:業(yè)務(wù)代碼控制器,模型層只寫(xiě)db的curd方法

復(fù)雜的業(yè)務(wù)代碼使controller過(guò)于的龐大和難以維護(hù)

當(dāng)下

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

更合理的分層

控制器暴露資源

業(yè)務(wù)代碼到邏輯層

模型層只寫(xiě)db的curd方法

度的把握,凡事都是靈活的,也不都是這樣,認(rèn)為足夠簡(jiǎn)單的邏輯還是“業(yè)務(wù)代碼控制器,模型層只寫(xiě)db的curd方法”。

依賴(lài)注入,懶加載,前置中間件

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

關(guān)于容器可以參考我之前簡(jiǎn)單的實(shí)現(xiàn)http://easy-php.tigerb.cn/#/?...

前置中間件注入我們依賴(lài)的類(lèi)

我實(shí)現(xiàn)的簡(jiǎn)單的前置中間件,示例掛載了一個(gè)gateway到控制器之前http://easy-php.tigerb.cn/#/?...

組件化代碼

首先我們需要利用composer來(lái)拆分和組件化我們的代碼,業(yè)務(wù)中簡(jiǎn)單的composer require即可復(fù)用我們的業(yè)務(wù)代碼。但是有一個(gè)問(wèn)題如果使用 https://packagist.org 需要把代碼開(kāi)源出去,和業(yè)務(wù)無(wú)關(guān)的工具類(lèi)還好說(shuō),而且開(kāi)源還是個(gè)好事情,但是和業(yè)務(wù)相關(guān)比較敏感的組件就有問(wèn)題了,所以我們需要搭建一個(gè)私有的packagist, 私有packagist示例:http://packagist.tigerb.cn/,具體搭建步驟見(jiàn)文末。

總結(jié)

目前讓我接手一個(gè)項(xiàng)目我會(huì)從如下幾個(gè)方面去組織我的php代碼:

composer組件化代碼,依賴(lài)開(kāi)源或私有packagist

前置中間件懶加載的方式依賴(lài)注入composer require的組件

控制器暴露資源

優(yōu)雅的參數(shù)校驗(yàn)工具類(lèi)

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

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

業(yè)務(wù)代碼到邏輯層(也不一定)

復(fù)雜的業(yè)務(wù)代碼先建模再寫(xiě),建??梢越M織好我們的代碼并且可以運(yùn)用一些設(shè)計(jì)模式,關(guān)于建??梢詤⒖嫉奈业奈恼翽HPer月工作總結(jié)之觀察者&裝飾器模式

模型層只寫(xiě)db的curd方法

不可撼動(dòng)的原則

結(jié)語(yǔ)

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

THX~

附錄

Satis搭建私有的packagist過(guò)程,安裝步驟如下:

step 1:

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

step 2:

touch satis.json

satis.json文件的內(nèi)容如下

{
  "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項(xiàng)目目錄,比如我的路徑/mnt/www>

step 4:

配置nginx server 配置,重啟nginx即可
如何使用?

簡(jiǎn)單的配置composer.json即可,增加新的repositories地址,具體示例配置如下:

{
    "name": "tigerb/test",
    "authors": [
        {
            "name": "TIGERB",
            "email": "[email protected]"
        }
    ],
    "repositories":[
        {"type":"composer", "url": "http://packagist.tigerb.cn"}
    ],
    "config": {
        "secure-http": false
    },
    "require": {
        "tigerb/easy-mipush": "^0.1.0"
    }
}

掃面下方二維碼關(guān)注我的技術(shù)公眾號(hào),及時(shí)為大家推送我的原創(chuàng)技術(shù)分享

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/25985.html

相關(guān)文章

  • 回顧我 2016 -- my2016()

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

    SimpleTriangle 評(píng)論0 收藏0
  • 程序員天花板

    摘要:年薪百萬(wàn)是很多程序員的目標(biāo)甚至夢(mèng)想。今天,就借用知乎推送給我的話(huà)題程序員如何突破職業(yè)天花板談一談我的心路歷程,其實(shí)也代表著我個(gè)人職場(chǎng)觀的進(jìn)化過(guò)程。 年薪百萬(wàn)是很多程...

    legendmohe 評(píng)論0 收藏0
  • 架構(gòu)

    摘要:分布式架構(gòu)實(shí)踐負(fù)載均衡在網(wǎng)站創(chuàng)立初期,我們一般都使用單臺(tái)機(jī)器對(duì)臺(tái)提供集中式服務(wù),但是隨著業(yè)務(wù)量越來(lái)越大,無(wú)論是性能上還是穩(wěn)定性上都有了更大的挑戰(zhàn)。就鹿晗宣布戀情導(dǎo)致微博宕機(jī)事件淺談大型網(wǎng)站高可用性架構(gòu)中午吃飯刷著刷著微博發(fā)現(xiàn)微博突然掛了。 分布式架構(gòu)實(shí)踐——負(fù)載均衡 在網(wǎng)站創(chuàng)立初期,我們一般都使用單臺(tái)機(jī)器對(duì)臺(tái)提供集中式服務(wù),但是隨著業(yè)務(wù)量越來(lái)越大,無(wú)論是性能上還是穩(wěn)定性上都有了更大的挑...

    Pink 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<