雖然說擴(kuò)展包并沒有什么強(qiáng)制的規(guī)定一定要如何組織代碼,但是我們推薦根據(jù)業(yè)界約定俗成的結(jié)構(gòu):
weather/├──.editorconfig# 編輯器配置文件,比如縮進(jìn)大小、換行模式等├──.gitattributes# git 配置文件,可以設(shè)計(jì)導(dǎo)出時(shí)忽略文件等├──.gitignore# git 忽略文件配置列表├──.php_cs# PHP-CS-Fixer 配置文件├──README.md? ? ├── composer.json├── phpunit.xml.dist├── src│? └──.gitkeep└── tests? ? └──.gitkeep
上面這個(gè)包結(jié)構(gòu)適用于幾乎所有的 PHP 擴(kuò)展包,如果你的擴(kuò)展包有其它附加內(nèi)容,也可以自由地做一些調(diào)整,只要滿足清晰合理即可。
結(jié)構(gòu)說明
src 目錄
通常我們將源代碼放置到此目錄下,文件名與類命名遵循駝峰命名法,目錄與命名空間一致。
注意:我們命名空間通常是按包名來的,然后?src?映射到駝峰寫法的命名空間(例如:包?overtrue/weather?的命名空間為?Overtrue\Weather)。
比如?src\Weather.php?文件的命名空間為?Overtrue\Weather,類名為?Overtrue\Weather\Weather。
代碼組織結(jié)構(gòu)請符合?PSR-4 規(guī)范。
tests 目錄
用于存放單元測試或者功能測試的測試用例代碼,與 src 組織規(guī)則基本一致。
.editorconfig 文件
EditorConfig?的配置文件,EditorConfig 是一套用于統(tǒng)一代碼格式的解決方案,很多項(xiàng)目都有用到,比如 Laravel、jQuery、Underscore 和 Ruby 等等。
EditorConfig 可以幫助開發(fā)者在不同的編輯器和 IDE 之間定義和維護(hù)一致的代碼風(fēng)格。EditorConfig 包含一個(gè)用于定義代碼格式的文件和一批編輯器插件,這些插件可以讓編輯器讀取配置文件并依此格式化代碼。EditorConfig 的配置文件十分易讀,并且可以很好的在 VCS(Version Control System)下工作。
簡單的說就是,這個(gè)配置文件定義了一些規(guī)則,比如 PHP 縮進(jìn)是用空格還是用 Tab。它會被現(xiàn)代的編輯器所識別并應(yīng)用(部分編輯器可能需要安裝對應(yīng)的插件,請參考?EditorConfig 官網(wǎng)?)使用。
.gitattributes
Git 的屬性配置文件,你可以對個(gè)別文件或目錄定義不同的合并策略,讓 Git 知道怎樣比較非文本文件,在你提交或簽出前讓 Git 過濾內(nèi)容。你將在這部分了解到能在自己的項(xiàng)目中使用的屬性,以及一些實(shí)例。更多請參考:《自定義 Git - Git 屬性》- git-scm.com
.gitignore
Git 忽略文件列表配置文件,將不需要納入版本控制的文件或者目錄按行配置在該文件即可。
.php_cs
代碼格式修復(fù)工具?PHP-CS-Fixer?配置文件,它可以按配置的標(biāo)準(zhǔn)自動修復(fù)代碼格式,以及統(tǒng)一文件頭注釋等非常多的功能。
README.md
項(xiàng)目說明文檔,一份項(xiàng)目介紹與使用指引,維護(hù)狀態(tài)授權(quán)方式等。
composer.json
Composer?配置文件。
phpunit.xml.dist
PHPUnit?配置文件,指定測試目錄與測試環(huán)境變量等,具體內(nèi)容請參考官方文檔:《組織測試:用 XML 配置來編排測試套件》- PHPunit。
.gitkeep
如果一個(gè)目錄為空,我們是無法納入到版本控制中的,所以我們創(chuàng)建了一個(gè)隨意命名(最好還是按業(yè)界通用做法命名為?.gitkeep)的隱藏文件來保證?目錄不為空。