ibexa/doctrine-schema

基于 Doctrine 的抽象层,用于跨 DBMS 架构导入

安装次数: 575,921

依赖者: 24

建议者: 0

安全: 0

星标: 2

关注者: 12

分支: 0

开放问题: 0

类型:ibexa-bundle


README

此 Symfony Bundle 提供了跨 DBMS 架构导入的基本抽象层。

它引入了自定义的 Yaml 格式用于架构定义,并提供自动装配的 API。

架构构建器

由定义在 \Ibexa\Contracts\DoctrineSchema\SchemaImporterInterface 接口上的 API 提供,将给定的 Yaml 源字符串或 Yaml 文件导入到 \Doctrine\DBAL\Schema 对象中。

架构导出器

由定义在 \Ibexa\Contracts\DoctrineSchema\SchemaExporterInterface 接口上的 API 提供,将给定的 \Doctrine\DBAL\Schema 对象导出到自定义的 Yaml 格式。

SchemaBuilder

由定义在 \Ibexa\Contracts\DoctrineSchema\Builder\SchemaBuilderInterface 接口上的 API 提供,是用于基于 Symfony 的项目的可扩展点。

SchemaBuilder 是事件驱动的。要挂钩到构建架构的过程,需要一个自定义的 EventSubscriber,例如。

use Ibexa\Contracts\DoctrineSchema\Event\SchemaBuilderEvent;
use Ibexa\Contracts\DoctrineSchema\SchemaBuilderEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class BuildSchemaSubscriber implements EventSubscriberInterface
{
    private string $schemaFilePath;

    public function __construct(string $schemaFilePath)
    {
        $this->schemaFilePath = $schemaFilePath;
    }

    /**
     * @return string[]
     */
    public static function getSubscribedEvents(): array
    {
        return [
            SchemaBuilderEvents::BUILD_SCHEMA => ['onBuildSchema', 200],
        ];
    }

    public function onBuildSchema(SchemaBuilderEvent $event): void
    {
        $event
            ->getSchemaBuilder()
            ->importSchemaFromFile($this->schemaFilePath);
    }
}

以这种方式提供的架构可以通过以下方式导入到架构对象中。

    public function __construct(SchemaBuilder $schemaBuilder)
    {
        $this->schemaBuilder = $schemaBuilder;
    }

    public function importSchema(): void
    {
        $schema = $this->schemaBuilder->buildSchema();
        // ...
    }

版权

版权(C)1999-2024 Ibexa AS(原名 eZ Systems AS)。保留所有权利。

许可证

此源代码可以在以下许可证下单独获得

A - Ibexa 商业使用许可协议(Ibexa BUL),版本 2.4 或更高版本(因为许可条款可能随时更新)Ibexa BUL 通过有效的 Ibexa DXP(原名 eZ Platform Enterprise)订阅获得,详情请参阅:https://www.ibexa.co/product 对于完整的 Ibexa BUL 许可证文本,请参阅:https://www.ibexa.co/software-information/licenses-and-agreements(适用最新版本)

AND

B - GNU 通用公共许可证,版本 2 授予一个绝对没有任何保证的 copyleft 开源许可证。有关完整的 GPL 许可证文本,请参阅:https://www.gnu.org/licenses/old-licenses/gpl-2.0.html