cycle/schema-renderer

Cycle ORM Schema 渲染的实用工具

1.2.0 2022-12-15 16:14 UTC

This package is auto-updated.

Last update: 2024-09-15 20:25:42 UTC


README

Latest Stable Version build static analysis Scrutinizer Code Quality Codecov StyleCI

此包可用于在终端中渲染 Cycle ORM Schema 或生成 PHP 表示形式。

安装

安装此包的首选方式是通过 Composer

composer require cycle/schema-renderer

示例

将模式转换为数组

$schema = new Schema([...]);
$converter = new \Cycle\Schema\Renderer\SchemaToArrayConverter();

$schemaArray = $converter->convert($schema);

如果传递的 SchemaInterface 不包含 toArray() 方法,则 SchemaToArrayConverter 将仅从 Cycle\ORM\SchemaInterface 转换常见属性。也会跳过空值。

在这种情况下,如果您想使用自定义属性,可以将它们传递给构造函数

$converter = new \Cycle\Schema\Renderer\SchemaToArrayConverter();

$schemaArray = $converter->convert($schema, [
    42,
    CustomClass::CUSTOM_PROPERTY,
    ...
]);

将模式渲染到终端

use Cycle\Schema\Renderer\OutputSchemaRenderer;

$output = new \Symfony\Component\Console\Output\ConsoleOutput();

$renderer = new OutputSchemaRenderer(colorize: true);

$output->write($renderer->render($schemaArray));

默认情况下,DefaultSchemaOutputRenderer 只在模板中渲染常见属性和关系。自定义属性将按原样在单独的块中渲染。如果您想扩展默认渲染模板,可以创建自定义渲染器并将它们添加到输出渲染器中。

use Cycle\Schema\Renderer\ConsoleRenderer\Renderer;
use Cycle\Schema\Renderer\ConsoleRenderer\Formatter;
use Cycle\Schema\Renderer\OutputSchemaRenderer;

class CustomPropertyRenderer implements Renderer {

    public function render(Formatter $formatter, array $schema, string $role): string
    {
        $data = $schema['my_custom_property'] ?? null;

        return \sprintf(
            '%s: %s',
            $formatter->title($this->title),
            $data === null ? $formatter->error('not defined') : $formatter->typecast($data)
        );
    }
}

$renderer = new OutputSchemaRenderer();

$renderer->addRenderer(
    new CustomPropertyRenderer(),
    new PropertyRenderer('my_custom_property', 'My super property')
);

$output->write($renderer->render($schemaArray))

将模式存储在 PHP 文件中

use Cycle\Schema\Renderer\PhpSchemaRenderer;

$path = __DIR__. '/schema.php'

$renderer = new PhpSchemaRenderer();

\file_put_contents($path, $renderer->render($schemaArray));

渲染器生成有效的 PHP 代码,在该代码中,Cycle ORM 类的常量被替换以提高可读性。

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 LICENSE。由 Spiral Scout 维护。