pomm-project / cli
Pomm 的命令行工具。
Requires
- php: >=5.4.4
- ext-pgsql: *
- pomm-project/foundation: ~2.0
- pomm-project/model-manager: ~2.0
- psr/log: ~1.0
- symfony/console: ~2.5|~3.0|~4.0|~5.0
Requires (Dev)
- atoum/atoum: ^2.8 || ^3.0
- symfony/filesystem: ~2.5|~3.0|~4.0
This package is auto-updated.
Last update: 2024-09-07 18:42:01 UTC
README
这是 Pomm 数据库框架的 Cli 组件。
配置
Pomm 的 Cli 与开发环境独立,它不知道项目中使用哪些配置类型和文件。要让 Cli 工作,需要创建一个返回 Pomm 实例的纯 PHP 启动文件。默认名称为 .pomm_cli_bootstrap.php
。如果项目已经有一个返回配置好的 Pomm 实例的脚本,可以使用选项 -b|--bootstrap-file="..."
指定它。
数据库检查
inspect
命令使用 Foundation.Inspector
显示数据库结构信息。
- pomm:inspect:database - 获取数据库中的模式。
- pomm:inspect:schema - 获取模式中的关系信息。
- pomm:inspect:relation - 获取关于关系的详细信息。
$ ./bin/pomm.php pomm:inspect:schema my_db_config
Found 3 relations in schema 'public'.
+-------------+-------+--------+---------+
| name | type | oid | comment |
+-------------+-------+--------+---------+
| pika | view | 126516 | pika |
| test_unique | table | 127619 | |
| worker | table | 126525 | |
+-------------+-------+--------+---------+
$ ./bin/pomm.php pomm:inspect:relation archived_document my_db_config pylone
Relation pylone.archived_document
+----+-------------+-----------+---------+---------+---------+
| pk | name | type | default | notnull | comment |
+----+-------------+-----------+---------+---------+---------+
| * | document_id | uuid | | yes | |
| | title | varchar | | yes | |
| | archived_at | timestamp | now() | yes | |
| * | version | int4 | | yes | |
| | usable | bool | | no | |
+----+-------------+-----------+---------+---------+---------+
代码生成
generate
命令创建用于与 Pomm 的 ModelManager 包一起使用数据库关系的 PHP 类。
- pomm:generate:structure - 根据关系结构生成 RowStructure 类。
- pomm:generate:model - 生成一个新的配置好的 Model 类。
- pomm:generate:entity - 生成一个空的 FlexibleEntity 类。
- pomm:generate:relation-all - 为给定关系生成上述 3 个文件。
- pomm:generate:schema-all - 为给定模式中的每个关系生成上述 3 个文件。
由于您将在生成的 Model 和 FlexibleEntity 类中添加自己的方法,因此默认情况下,它们不会被 generate
命令覆盖。可以通过隐式指定选项 --force
来做到这一点。所有覆盖类中的代码都将丢失并被全新的类替换。结构文件始终覆盖,而无需确认。为了避免这两种类型的类混合,结构类保存在 AutoStructure
子目录下。
前缀选项
默认情况下,Pomm 的 ModelManager 预期至少使用以下命名空间保存类:DatabaseConfigName\SchemaSchema
。可以告诉 Cli 这个结构从哪里开始以及如何调整。
--prefix-dir
,-d
- 指示命名空间目录树开始的位置。--prefix-ns
,-a
- 指示可选的命名空间前缀。
当没有指定选项时,生成公共模式的所有关系的操作如下
$ ./bin/pomm.php pomm:generate:schema-all -v pomm_test
✓ Creating file './PommTest/PublicSchema/AutoStructure/Pika.php'.
✓ Creating file './PommTest/PublicSchema/PikaModel.php'.
✓ Creating file './PommTest/PublicSchema/Pika.php'.
✓ Creating file './PommTest/PublicSchema/AutoStructure/TestUnique.php'.
✓ Creating file './PommTest/PublicSchema/TestUniqueModel.php'.
✓ Creating file './PommTest/PublicSchema/TestUnique.php'.
✓ Creating file './PommTest/PublicSchema/AutoStructure/Worker.php'.
✓ Creating file './PommTest/PublicSchema/WorkerModel.php'.
✓ Creating file './PommTest/PublicSchema/Worker.php'.
$ tree PommTest
PommTest/
└── PublicSchema
├── AutoStructure
│ ├── Pika.php
│ ├── TestUnique.php
│ └── Worker.php
├── PikaModel.php
├── Pika.php
├── TestUniqueModel.php
├── TestUnique.php
├── WorkerModel.php
└── Worker.php
2 directories, 9 files
将模型命名空间放在项目根目录下通常不是一个好主意。大多数情况下,它被放在 sources/lib
目录下的 Model
命名空间中。
$ ./bin/pomm.php pomm:generate:schema-all --prefix-dir sources/lib --prefix-ns Model pomm_test
✓ Creating file 'sources/lib/Model/PommTest/PublicSchema/AutoStructure/Pika.php'.
…