一個(gè)項(xiàng)目在著手開發(fā)之前,一定要確定好相關(guān)的開發(fā)規(guī)范。比如文件目錄結(jié)構(gòu)、方法名稱、變量名稱、代碼風(fēng)格以及注釋等。本期內(nèi)容,我們就以CRMEB開源商城系統(tǒng) & 標(biāo)準(zhǔn)版系統(tǒng)(PHP)為示例,系統(tǒng)的介紹一下本項(xiàng)目中的開發(fā)規(guī)范。
一、文件目錄
CRMEB標(biāo)準(zhǔn)版系統(tǒng)(PHP)的框架使用的是ThinkPHP6,主要目錄和框架目錄相似,在這里說明一下項(xiàng)目中使用到的主要目錄:
1、程序根目錄下的crmeb目錄是系統(tǒng)的核心目錄,程序的核心功能都在這個(gè)文件夾下,基類、支付、短信、授權(quán)、導(dǎo)出、云存儲等基本功能都在次文件夾下。
注意???? 這個(gè)文件日常開發(fā)中盡量不要修改,如果必須要增加一個(gè)基礎(chǔ)功能時(shí),再去修改此文件夾。
2、app是ThinkPHP默認(rèn)的目錄,但是項(xiàng)目在app文件夾下進(jìn)行了功能性的細(xì)化,包括model、dao、services等。
model:對應(yīng)數(shù)據(jù)庫的文件,保證每一張表都有一個(gè)model對應(yīng),這是一個(gè)最簡單的model文件,命名空間,引用基類,$pk是表主鍵,$name是表名稱。
dao層文件:只做數(shù)據(jù)查詢、添加、修改等數(shù)據(jù)庫操作,不做任何數(shù)據(jù)處理。
services層:處理程序的主要邏輯,如果構(gòu)造方法注入dao層文件,services層的文件和dao層文件不是一一對應(yīng)的。
controller層:這個(gè)里面的文件用于接收數(shù)據(jù)和發(fā)送數(shù)據(jù),接收到數(shù)據(jù)之后調(diào)用對應(yīng)處理數(shù)據(jù)的service層代碼進(jìn)行處理,再將返回值發(fā)送給請求方。
二、代碼的開發(fā)
namespace和use規(guī)范:
(1)namespace聲明后必須插入一個(gè)空白行
(2)所有use必須在namespace后聲明
(3)每條use聲明語句必須只有一個(gè)use關(guān)鍵詞
(4)use聲明語句塊后必須要有一個(gè)空白行
類的定義:使用英文名詞,以大寫字母作為詞的分隔,其他的字母均使用小寫,名詞的首個(gè)字母使用大寫,不使用下劃線,extends必須和類名在同一行。
定義的每個(gè)屬性都必須添加訪問修飾符:public、protected或private。
方法的命名規(guī)則:使用小駝峰命名
(1)使用英文名詞、動詞,以大寫字母作為詞的分隔,其他的字母均使用小寫,單詞的首個(gè)字母使用小寫;
(2)不使用下劃線參數(shù),嚴(yán)格情況下需要聲明變量類型,有默認(rèn)值的參數(shù)需要在最后面;
(3)每一個(gè)方法都要有注釋,表明方法用途、傳入?yún)?shù)和類型、返回的參數(shù)類型等。
所有的運(yùn)算符左右都要留下空格,類似下面的方法:
(1)PHP所有關(guān)鍵字必須全部小寫
(2)非空行后一定不能有多余的空格符
(3)每行一定不能存在多于一條語句
(4)適當(dāng)空行可以使得閱讀代碼更加方便以及有助于代碼的分塊(但注意不能濫用空行)。
溫馨提示:在功能邏輯實(shí)現(xiàn)過程中,避免在循環(huán)中進(jìn)行數(shù)據(jù)庫的操作!
CRMEB技術(shù)社區(qū)交流:
對本文有任何見解,或?qū)RMEB產(chǎn)品相關(guān)開發(fā)規(guī)范有疑問的朋友,都可以在本社區(qū)發(fā)帖/留言反饋,我們的產(chǎn)品開發(fā)人員會在線為您答疑解惑,也能和更多技術(shù)開發(fā)同仁共同交流哦~