Pomm 的命令行工具。

2.0.3 2020-05-06 23:02 UTC

This package is auto-updated.

Last update: 2024-09-07 18:42:01 UTC


README

这是 Pomm 数据库框架的 Cli 组件。

Latest Stable Version Scrutinizer Code Quality Build Status Monthly Downloads License

配置

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'.
…