68publishers/doctrine-bridge
Composer 安装命令:
composer require 68publishers/doctrine-bridge
包简介
Bridges between integrations of Doctrine ORM and '68publishers bundles.
README 文档
README
Register custom DBAL types, entity mappings, target entities and migration directories directly inside your CompilerExtensions!
Installation
The best way to install 68publishers/doctrine-bridge is using Composer:
$ composer require 68publishers/doctrine-bridge
Configuration
extensions: 68publishers.doctrine_bridge: SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\DoctrineBridgeExtension # The default configuration: 68publishers.doctrine_bridge: database_types_enabled: yes # Enables/disables registration of acustom DBAL types entity_mappings_enabled: yes # Enables/disables registration of entity mappings target_entities_enabled: yes # Enables/disables resolving of target entities migration_directories_enabled: yes # Enables/disables registration of migrations for doctrine/migrations # Dependent services. Allowed are classname strings (for autowired services) or references e.g. @myService services: dbal_connection: Doctrine\DBAL\Connection drivers: # For drivers, you can use `false`. In this case, mappings for the drive will be omitted chain: Doctrine\Persistence\Mapping\Driver\MappingDriverChain annotation: Doctrine\ORM\Mapping\Driver\AnnotationDriver xml: Doctrine\ORM\Mapping\Driver\XmlDriver simplified_xml: Doctrine\ORM\Mapping\Driver\SimplifiedXmlDriver attribute: Doctrine\ORM\Mapping\Driver\AttributeDriver migrations_configuration: Doctrine\Migrations\Configuration\Configuration
The package is fully tested in combination with nettrine/orm and nettrine/migrations, however it can be plugged into almost any Doctrine integration into the Nette Framework using the services options.
Usage
Database Type Provider
use Doctrine\DBAL\Types\Types; use Nette\DI\CompilerExtension; use Ramsey\Uuid\Doctrine\UuidBinaryOrderedTimeType; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\DatabaseType; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\DatabaseTypeProviderInterface; class MyExtension extends CompilerExtension implements DatabaseTypeProviderInterface { public function getDatabaseTypes() : array { return [ new DatabaseType('uuid_binary_ordered_time', Ramsey\Uuid\Doctrine\UuidBinaryOrderedTimeType::class, Types::BINARY), new DatabaseType('my_custom_type', MyCustomType::class), ]; } }
Services in Doctrine Types
Doctrine DBAL types don't have access to services by default. With this extension, you can receive the DI Container in custom types when the Connection is created.
use Nette\DI\Container; use Doctrine\DBAL\Types\StringType; use SixtyEightPublishers\DoctrineBridge\Type\ContainerAwareTypeInterface; final class MyExtension extends StringType implements ContainerAwareTypeInterface { private MyService $service; public function setContainer(Container $container, array $context = []) : void { $this->service = $container->getByType(MyService::class); } }
Registering Doctrine Types via bundled DatabaseTypeProviderExtension
To register custom types, it is not necessary to create a custom extension, but the class DatabaseTypeProviderExtension can be used.
extensions: 68publishers.doctrine_bridge.database_type_provider: SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\DatabaseTypeProviderExtension 68publishers.doctrine_bridge.database_type_provider: # inline notation: my_type_1: App\DbalType\MyType1 # structured notation: my_type_2: class: App\DbalType\MyType2 mapping_type: text context: []
Entity Mapping Provider
use Nette\DI\CompilerExtension; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\EntityMapping; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\EntityMappingProviderInterface; class MyExtension extends CompilerExtension implements EntityMappingProviderInterface { public function getEntityMappings() : array { return [ new EntityMapping(EntityMapping::DRIVER_ANNOTATION, 'App\\Entity', __DIR__ . '/../Entity'), new EntityMapping(EntityMapping::DRIVER_ATTRIBUTE, 'App\\Entity', __DIR__ . '/../Entity'), new EntityMapping(EntityMapping::DRIVER_XML, 'App\\Entity', __DIR__ . '/../Mapping/xml'), # or new EntityMapping(EntityMapping::DRIVER_SIMPLIFIED_XML, 'App\\Entity', __DIR__ . '/../Mapping/xml'), ]; } }
Target Entity Provider
use Nette\DI\CompilerExtension; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\TargetEntity; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\TargetEntityProviderInterface; class MyExtension extends CompilerExtension implements TargetEntityProviderInterface { public function getTargetEntities() : array { return [ new TargetEntity(ProductInterface::class, ProductEntity::class), ]; } }
Migration directories
use Nette\DI\CompilerExtension; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\TargetEntity; use SixtyEightPublishers\DoctrineBridge\Bridge\Nette\DI\MigrationsDirectoriesProviderInterface; class MyExtension extends CompilerExtension implements MigrationsDirectoriesProviderInterface { public function getMigrationsDirectories() : array { return [ new MigrationsDirectory('App\\Bundle\\MyBundle\\Migrations', __DIR__ . '/../Migrations'), ]; } }
Contributing
Before opening a pull request, please check your changes using the following commands
$ make init # to pull and start all docker images
$ make cs.check
$ make stan
$ make tests.all
68publishers/doctrine-bridge 适用场景与选型建议
68publishers/doctrine-bridge 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4.74k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2020 年 11 月 16 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「orm」 「doctrine」 「nette」 「Bridge」 「68publishers」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 68publishers/doctrine-bridge 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 68publishers/doctrine-bridge 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 68publishers/doctrine-bridge 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Kinikit - PHP Application development framework MVC component
PHP Database ORM for Symfony1. Do NOT use for new projects: please move to a newest Symfony release and Doctrine2
Nette Framework adapter for I18n package
Build forms from schema
Make pimcore migration simple
Asynchronous MQTT client built on React
统计信息
- 总下载量: 4.74k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 18
- 依赖项目数: 5
- 推荐数: 1
其他信息
- 授权协议: MIT
- 更新时间: 2020-11-16