streamcommon / doctrine-manager
Doctrine 2 container interop
Installs: 5 065
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 2
Open Issues: 2
Requires
- php: ^7.3 || ^8.0
- doctrine/dbal: ^2.9.2
- doctrine/event-manager: ^1.0.0
- doctrine/migrations: ^3.0.0
- doctrine/orm: ^2.6.3
- psr/container: ^1.0
- streamcommon/excess-configuration: ^1.0.0
Requires (Dev)
- ext-memcached: *
- ext-pdo: *
- ext-pdo_sqlite: *
- ext-redis: *
- jsoumelidis/zend-sf-di-config: ^0.4.0
- laminas/laminas-auradi-config: ^1.0.1
- laminas/laminas-pimple-config: ^1.1.0
- laminas/laminas-servicemanager: ^3.4.0
- malukenho/docheader: ^0.1.7
- php-coveralls/php-coveralls: ^2.1.0
- phpspec/prophecy-phpunit: dev-master
- phpstan/phpstan: ^0.12.18
- phpunit/phpunit: ^9.1.1
- predis/predis: ^1.1.0
- roave/security-advisories: dev-master
- streamcommon/coding-standard: dev-master
This package is auto-updated.
Last update: 2024-12-19 22:01:08 UTC
README
This package provide Doctrine 2 factories for PRS-11 container standard.
Branches
Installation
Console run:
composer require streamcommon/doctrine-manager
Or add into your composer.json
:
"require": { "streamcommon/doctrine-manager": "*" }
Please check doctrine documentation for more info
- ORM version 2.6
- DBAL version 2.9
- Migrations version 2.1
- Event Manager version 1.0
- Metadata driver
- ORM Events
- Doctrine Annotation >1.6
- Caching
- Entity Manager
- ZendFramework/zend-servicemanager
- ZendFramework/zend-auradi-config
- ZendFramework/zend-pimple-config
- Jsoumelidis/zend-sf-di-config
- Laminas/laminas-servicemanager
- Laminas/laminas-auradi-config
- Laminas/laminas-pimple-config
Example configure project file
Psr\Container\ContainerInterface
container MUST haveconfig
key
Configure your project config file:
- Configure doctrine configuration like:
'config' => [ 'doctrine' => [ 'configuration' => [ // If you use single connection 'orm_default' => [ 'result_cache' => 'array', 'metadata_cache' => 'array', 'query_cache' => 'array', 'hydration_cache' => 'array', 'driver' => 'orm_default', ], // If you want to add a second connection 'orm_custom' => [ 'result_cache' => 'memcached', 'metadata_cache' => 'memcached', 'query_cache' => 'memcached', 'hydration_cache' => 'memcached', 'driver' => 'orm_custom', ], ],
- Configure connection options like:
'connection' => [ // If you use single connection // Default using MySql connection 'orm_default' => [ 'configuration' => 'orm_default', 'event_manager' => 'orm_default', 'params' => [ 'dbname' => 'name', 'user' => 'user', 'password' => 'password', 'host' => 'localhost', ], ], // If you want to add a second connection // Alternative Postgress connection 'orm_custom' => [ 'configuration' => 'orm_custom', 'event_manager' => 'orm_custom', 'driver_class_name' => \Doctrine\DBAL\Driver\PDOPgSql\Driver::class, 'params' => [ 'dbname' => 'name', 'user' => 'user', 'password' => 'password', 'host' => 'localhost_custom', ], ] ],
- Configure entity|event manager:
'entity_manager' => [ 'orm_default' => [ 'connection' => 'orm_default', 'configuration' => 'orm_default', ], 'orm_custom' => [ 'connection' => 'orm_custom', 'configuration' => 'orm_custom', ] ], 'event_manager' => [ 'orm_default' => [ 'subscribers' => [], ], 'orm_custom' => [ 'subscribers' => [], ] ], 'entity_resolver' => [ 'orm_default' => [ 'resolvers' => [], ], 'orm_custom' => [ 'resolvers' => [], ], ],
- Configure orm driver, for example:
'driver' => [ // If you use single connection // Annotation driver example //@see https://www.doctrine-project.org/projects/doctrine-annotations/en/1.6/index.html 'orm_default' => [ 'class_name' => \Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain::class, 'drivers' => [ 'Annotation\Entity' => 'Annotation\Entity' ], ], 'Annotation\Entity' => [ 'class_name' => \Doctrine\ORM\Mapping\Driver\AnnotationDriver::class, 'paths' => [ __DIR__ . '/Annotation/Entity' ] ], // If you want to add a second connection // Php driver for example 'orm_custom' => [ 'class_name' => \Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain::class, 'drivers' => [ 'PHPDriver\Entity' => 'PHPDriver\Entity' ], ], 'PHPDriver\Entity' => [ 'class_name' => \Doctrine\Common\Persistence\Mapping\Driver\PHPDriver::class, 'paths' => [ __DIR__ . '/PHPDriver/Entity' ] ], ],
- Configure doctrine cache:
//@see https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/caching.html 'cache' => [ 'array' => [ 'class_name' => Doctrine\Common\Cache\ArrayCache::class, 'namespace' => 'Streamcommon\Doctrine\Manager\Interop', ] ], ] ],
- Configure your project dependencies:
use Streamcommon\Doctrine\Manager\Common\Factory\{ Cache as CacheFactory, Driver as DriverFactory, EventManager as EventManagerFactory }; use Streamcommon\Doctrine\Manager\DBAL\Factory\Connection as ConnectionFactory; use Streamcommon\Doctrine\Manager\ORM\Factory\{ Configuration as ConfigurationFactory, EntityManager as EntityManagerFactory, EntityResolver as EntityResolverFactory, }; 'dependencies' => [ 'factories' => [ // If you use single connection 'doctrine.driver.orm_default' => [DriverFactory::class, 'orm_default'], 'doctrine.event_manager.orm_default' => [EventManagerFactory::class, 'orm_default'], 'doctrine.configuration.orm_default' => [ConfigurationFactory::class, 'orm_default'], 'doctrine.connection.orm_default' => [ConnectionFactory::class, 'orm_default'], 'doctrine.entity_resolver.orm_default' => [EntityResolverFactory::class, 'orm_default'], 'doctrine.entity_manager.orm_default' => [EntityManagerFactory::class, 'orm_default'], 'doctrine.cache.array' => [CacheFactory::class, 'orm_default'], // If you want to add a second connection 'doctrine.driver.orm_custom' => [DriverFactory::class, 'orm_custom'], 'doctrine.event_manager.orm_custom' => [EventManagerFactory::class, 'orm_custom'], 'doctrine.configuration.orm_custom' => [ConfigurationFactory::class, 'orm_custom'], 'doctrine.connection.orm_custom' => [ConnectionFactory::class, 'orm_custom'], 'doctrine.entity_resolver.orm_custom' => [EntityResolverFactory::class, 'orm_custom'], 'doctrine.entity_manager.orm_custom' => [EntityManagerFactory::class, 'orm_custom'], ], ]
- Use in your project:
$em = $container->get('doctrine.entity_manager.orm_default'); $connection = $container->get('doctrine.connection.orm_default');
Example configure container
Laminas ServiceManager
use Streamcommon\Doctrine\Manager\ConfigProvider; use Laminas\ServiceManager\ServiceManager; $config = new ConfigProvider(); $config = $config(); $dependencies = $config['dependencies']; $dependencies['services']['config'] = $config; return new ServiceManager($dependencies);
Symfony Container
use JSoumelidis\SymfonyDI\Config\{Config as SymfonyConfig, ContainerFactory as SymfonyContainerFactory}; use Streamcommon\Doctrine\Manager\ConfigProvider; $config = new ConfigProvider(); $config = $config(); $dependencies = $config['dependencies']; $dependencies['services']['config'] = $config; $container = new SymfonyContainerFactory(); return $container(new SymfonyConfig($dependencies))
Etc...
CLI usage
- See
- For many connections was added a new
--object-manager
argument toorm
namespace:
Arguments: --object-manager Doctrine object manager name [default: "orm_default"]