ibexa / doctrine-schema
基于 Doctrine 的抽象层,用于跨 DBMS 架构导入
Requires
- php: ^7.4 || ^8.0
- doctrine/dbal: ^2.13
- symfony/config: ^5.3
- symfony/console: ^5.3
- symfony/dependency-injection: ^5.3
- symfony/http-kernel: ^5.3
- symfony/yaml: ^5.3
Requires (Dev)
- ibexa/code-style: ^1.0
- phpstan/phpstan: ^1.10
- phpstan/phpstan-phpunit: ^1.3
- phpstan/phpstan-symfony: ^1.2
- phpunit/phpunit: ^8.5
Replaces
- dev-main / 5.0.x-dev
- 4.6.x-dev
- v4.6.11
- v4.6.10
- v4.6.9
- v4.6.8
- v4.6.7
- v4.6.6
- v4.6.5
- v4.6.4
- v4.6.3
- v4.6.2
- v4.6.1
- v4.6.0
- v4.6.0-rc1
- v4.6.0-beta5
- v4.6.0-beta4
- v4.6.0-beta3
- v4.6.0-beta2
- v4.6.0-beta1
- 4.5.x-dev
- v4.5.7
- v4.5.6
- v4.5.5
- v4.5.4
- v4.5.3
- v4.5.2
- v4.5.1
- v4.5.0
- v4.5.0-rc1
- v4.5.0-beta2
- v4.5.0-beta1
- 4.4.x-dev
- v4.4.4
- v4.4.3
- v4.4.2
- v4.4.1
- v4.4.0
- v4.4.0-rc1
- v4.4.0-beta1
- 4.3.x-dev
- v4.3.5
- v4.3.4
- v4.3.3
- v4.3.2
- v4.3.1
- v4.3.0
- v4.3.0-rc1
- v4.3.0-beta1
- 4.2.x-dev
- v4.2.4
- v4.2.3
- v4.2.2
- v4.2.1
- v4.2.0
- v4.2.0-rc1
- v4.2.0-beta1
- 4.1.x-dev
- v4.1.5
- v4.1.4
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- v4.1.0-rc1
- v4.1.0-beta1
- 4.0.x-dev
- v4.0.8
- v4.0.7
- v4.0.6
- v4.0.5
- v4.0.4
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v4.0.0-rc5
- v4.0.0-rc4
- v4.0.0-rc3
- v4.0.0-rc2
- v4.0.0-rc1
- v4.0.0-beta5
- v4.0.0-beta4
- v4.0.0-beta3
- v4.0.0-beta2
- v4.0.0-beta1
- dev-dbal
- dev-temp_1.0_to_main
- dev-IBX-2153-move-config-resolver
- dev-merge-move-to-github-actions
- dev-ibx-1334-cross-rebranding
- dev-ibx-1334-cross-rebranding-cleanup
This package is auto-updated.
Last update: 2024-09-16 12:32:48 UTC
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