ezsystems / doctrine-dbal-schema
在 Doctrine 上面的抽象层,用于跨 DBMS 架构导入
Requires
- php: ^7.3
- doctrine/dbal: ^2.10
- symfony/config: ^5.0
- symfony/dependency-injection: ^5.0
- symfony/http-kernel: ^5.0
- symfony/yaml: ^5.0
Requires (Dev)
- ezsystems/ezplatform-code-style: ^0.4.0
- phpunit/phpunit: ^8.5
- v4.0.0-alpha2
- v4.0.0-alpha1
- 1.0.x-dev
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v1.0.0-rc1
- v1.0.0-beta4
- v1.0.0-beta3
- v1.0.0-beta2
- v1.0.0-beta1
- 0.1.x-dev
- v0.1.8
- v0.1.7
- v0.1.6
- v0.1.5
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- v0.1.0-rc1
- dev-snapshot-master
- dev-rfc/nameless-indexes
This package is auto-updated.
Last update: 2024-08-30 01:23:19 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