ezsystems/doctrine-dbal-schema

在 Doctrine 上面的抽象层,用于跨 DBMS 架构导入

安装次数: 729,243

依赖者: 33

建议者: 0

安全: 0

星标: 29

关注者: 21

分支: 3

类型:ezplatform-bundle

v4.0.0-alpha2 2021-10-13 11:53 UTC

README

此 Symfony 扩展包提供跨 DBMS 架构导入的基本抽象层。

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

架构构建器

\EzSystems\DoctrineSchema\API\SchemaImporter 接口定义的 API 提供,将给定的 Yaml 源字符串或 Yaml 文件导入到 \Doctrine\DBAL\Schema 对象中。

架构导出器

\EzSystems\DoctrineSchema\API\SchemaExporter 接口定义的 API 提供,将给定的 \Doctrine\DBAL\Schema 对象导出到自定义的 Yaml 格式。

SchemaBuilder

\EzSystems\DoctrineSchema\API\Builder\SchemaBuilder 接口定义的 API 提供,是用于基于 Symfony 的项目的可扩展点。

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

use EzSystems\DoctrineSchema\API\Event\SchemaBuilderEvent;
use EzSystems\DoctrineSchema\API\Event\SchemaBuilderEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class BuildSchemaSubscriber implements EventSubscriberInterface
{
    /**
     * @var string
     */
    private $schemaFilePath;

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

    /**
     * Returns an array of events this subscriber wants to listen to.
     *
     * @return string[]
     */
    public static function getSubscribedEvents()
    {
        return [
            SchemaBuilderEvents::BUILD_SCHEMA => ['onBuildSchema', 200],
        ];
    }

    /**
     * @param \EzSystems\DoctrineSchema\API\Builder\SchemaBuilderEvent $event
     */
    public function onBuildSchema(SchemaBuilderEvent $event)
    {
        $event
            ->getSchemaBuilder()
            ->importSchemaFromFile($this->schemaFilePath);
    }
}

通过这种方式提供的架构可以通过以下方式导入到 Schema 对象中,例如:

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

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

版权

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

许可证

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

A - Ibexa 商业使用许可协议(Ibexa BUL),版本 2.4 或更高版本(因为许可证条款可能随时更新)Ibexa BUL 通过拥有有效的 Ibexa DXP(原名 eZ Platform 企业)订阅获得,如以下网址所述:https://www.ibexa.co/product 有关 Ibexa BUL 许可证全文,请参阅:https://www.ibexa.co/software-information/licenses-and-agreements(适用最新版本)

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