合适的開發姿勢對于開發優秀的項目或産品是很重要的,無奈本人經驗有限,若有不同看法或者錯誤的表述,歡迎交流指正,以免無人子弟 ^ ^
基于 PDS-Skeleton 建立一個新項目,并且安裝 phpunit。
進入項目目錄後,可以看到目前的結構為
檢驗目前目錄是否符合 PDS 标準
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL3ADZycjM1U2NyQDZ1AjMjNjNiJTYjRWYjJTZhVWOmJmN3YmZzcjNl9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
建立web 項目缺失的幾個标準目錄(如果是開發第三方包,不需要這些目錄),注意generate 後面一定要指定項目目錄,否則檔案将會被建立到家目錄中 - -
再看一下現在的目錄結構,可以看到的确多了上面輸出結果提示的 4個檔案夾和檔案
可以看到這樣的目錄結構就我們要的完整結構,下面讓我們删掉額外的檔案
我們決定以 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~