The Symfony MakerBundle
Symfony Maker 協助您建立空的命令、控制器、表單類別、測試等等,讓您可以忘記撰寫樣板程式碼。此套件假設您使用標準的 Symfony 6.4 目錄結構,但許多命令可以將程式碼產生到任何應用程式中。
用法
此套件在 make:
命名空間下提供數個命令。執行此命令以列出所有命令
1 2 3 4 5 6 7 8 9 10
$ php bin/console list make
make:command Creates a new console command class
make:controller Creates a new controller class
make:entity Creates a new Doctrine entity class
[...]
make:validator Creates a new validator and constraint class
make:voter Creates a new security voter class
命令的名稱是不言自明的,但其中一些命令包含選用引數和選項。使用 --help
選項查看它們
1
$ php bin/console make:controller --help
注意
make:entity
需要安裝並設定 doctrine/orm
。此 maker 僅支援 ORM,不支援 ODM。
程式碼風格檢查產生出的程式碼
MakerBundle 使用 php-cs-fixer 在產生 .php
檔案時強制執行程式碼標準。當執行 make
命令時,MakerBundle 將使用與此套件一起封裝的 php-cs-fixer
版本和設定。
您可以使用各自的環境變數,明確設定 php-cs-fixer 二進位檔和/或設定檔的自訂路徑
MAKER_PHP_CS_FIXER_BINARY_PATH
例如 tools/vendor/bin/php-cs-fixerMAKER_PHP_CS_FIXER_CONFIG_PATH
例如 .php-cs-fixer.config.php
提示
PHP-CS-Fixer 是否為全域安裝?為了避免在每個專案中都需設定這些,您可以改為在您的作業系統上設定它們。
設定
此套件不需要任何設定。但是,您 *可以* 覆寫預設設定
1 2 3 4 5 6
# config/packages/maker.yaml
when@dev:
maker:
root_namespace: 'App'
generate_final_classes: true
generate_final_entities: false
root_namespace
類型: string
預設值: App
在產生所有類別時使用的根命名空間 (例如 App\Entity\Article
、App\Command\MyCommand
等)。將其變更為 Acme
將會導致 MakerBundle 建立像這樣的新類別 (例如 Acme\Entity\Article
、Acme\Command\MyCommand
等)。
generate_final_classes
類型: boolean
預設值: true
預設情況下,MakerBundle 將使用 final
PHP 關鍵字產生您的所有類別,但 doctrine 實體除外。將此設定為 false
以覆寫所有 maker 命令的此行為。
請參閱 https://php.dev.org.tw/manual/en/language.oop5.final.php
1 2 3 4
final class MyVoter
{
...
}
1.61
generate_final_classes
在 MakerBundle 1.61 中引入。
generate_final_entities
類型: boolean
預設值: false
預設情況下,MakerBundle 將不會使用 final
PHP 關鍵字產生您的任何 doctrine 實體類別。將此設定為 true
以覆寫所有建立實體的 maker 命令的此行為。
請參閱 https://php.dev.org.tw/manual/en/language.oop5.final.php
1 2 3 4 5
#[ORM\Entity(repositoryClass: TaskRepository::class)]
final class Task extends AbstractEntity
{
...
}
1.61
generate_final_entities
在 MakerBundle 1.61 中引入。
建立您自己的 Maker
如果您的應用程式需要產生自訂樣板程式碼,您可以重複使用此套件提供的工具來建立您自己的 make:...
命令。若要執行此操作,您應該在您的 src/Maker/
目錄中建立一個類別,該類別擴展了 AbstractMaker。這就完成了!
有關如何完成新的 maker 命令的範例,請參閱 核心 maker 命令。請確保您的類別已註冊為服務,並標記為 maker.command
。如果您使用的是標準 Symfony services.yaml
設定,則會自動完成此操作。
覆寫產生出的程式碼
產生出的程式碼永遠不可能對所有人都是完美的。MakerBundle 嘗試在新增「擴充點」與保持程式庫簡單之間取得平衡,以便可以改進現有命令並新增命令。
基於這個原因,一般來說,產生出的程式碼無法修改。在許多情況下,新增您 *自己的* maker 命令非常容易,因此我們建議這樣做。但是,如果您想要某些擴充點,請開啟 issue 以便我們可以討論!