天天看點

探索 PHP project 或 package 的标準開發姿勢

合适的開發姿勢對于開發優秀的項目或産品是很重要的,無奈本人經驗有限,若有不同看法或者錯誤的表述,歡迎交流指正,以免無人子弟 ^ ^

基于 PDS-Skeleton 建立一個新項目,并且安裝 phpunit。

進入項目目錄後,可以看到目前的結構為

檢驗目前目錄是否符合 PDS 标準

探索 PHP project 或 package 的标準開發姿勢

建立web 項目缺失的幾個标準目錄(如果是開發第三方包,不需要這些目錄),注意generate 後面一定要指定項目目錄,否則檔案将會被建立到家目錄中 - -

再看一下現在的目錄結構,可以看到的确多了上面輸出結果提示的 4個檔案夾和檔案

探索 PHP project 或 package 的标準開發姿勢

可以看到這樣的目錄結構就我們要的完整結構,下面讓我們删掉額外的檔案

我們決定以 TDD 的方式開發項目,在項目根目錄下建立 phpunit.xml,寫入以下内容

bootstrap 節點會告訴phpunit 在測試開始前需要加載哪些PHP 檔案;建立 tests/autoload.php 并寫入一下内容

現在假設我們要測試 BlogEngineDomainPost 類。讓我們先寫測試,建立 tests/Blog/Engine/Domain/PostTest.php

PostTest.php 代碼如下

如果我們現在執行 php vendor/bin/phpunit,會得到以下錯誤

錯誤很明顯,BlogEngineDomainPost 找不到,我們馬上來寫一個

Post.php 檔案包含如下代碼,TDD 方式開發時,業務代碼隻需剛好滿足測試通過即可

我們再執行 php vendor/bin/phpunit,仍然會得到以下錯誤

oops~,什麼情況,還是找不到類的定義,看一下目前的 composer.json 檔案内容

你一定注意到了 autoload 和 autoload-dev,這個選項可以指定psr-4 的命名空間和其對應的檔案路徑,下面我們來指定一下 Blog 命名空間指向的路徑

重新執行 php vendor/bin/phpunit,bravo~