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 命令的此行为。
请参阅 http://php.ac.cn/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 命令的此行为。
请参阅 http://php.ac.cn/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 中引入。
创建您自己的 Makers
如果您的应用程序需要生成自定义样板代码,您可以创建自己的 make:...
命令,重用此扩展包提供的工具。为此,您应该在 src/Maker/
目录中创建一个扩展 AbstractMaker 的类。就这么简单!
有关如何完成您的新 maker 命令的示例,请参阅 核心 maker 命令。确保您的类注册为服务并标记为 maker.command
。如果您正在使用标准的 Symfony services.yaml
配置,这将自动完成。
覆盖生成代码
生成的代码永远不可能对每个人都完美。MakerBundle 试图在添加“扩展点”与保持库的简单性之间取得平衡,以便可以改进现有命令并添加新命令。
因此,总的来说,生成的代码无法修改。在许多情况下,添加您自己的 maker 命令非常容易,因此我们建议这样做。但是,如果您想要一些扩展点,请打开一个 issue,以便我们可以讨论!