Позвольте мне понять вашу проблему, вы ищете пакет для обмена с помощью Doctrine Entity Manager Symfony?поэтому позвольте мне поделиться с вами своим опытом.
Это возможно, и нет решения, видимого для чтения или просмотра, поэтому вам нужно просмотреть некоторые пакеты, чтобы понять, как они решают проблему, пакет, который я рассматривал, былпо этой ссылке этот пакет обеспечивает поддержку не только доктрины, но и других платформ, таких как Mongo, поэтому позвольте мне поделиться с вами тем, как они приняли решение.
Во-первых, вам нужно создатьпакет в bitbucket или github, и сделал этот пакет как "type": "symfony-bundle".Я прочитал комментарии ранее, и вы правы, вам нужно создать файл конфигурации и расширения, чтобы включить ваши пакеты, поэтому в вашем файле расширения вам нужно реализовать Symfony \ Component \ DependencyInjection \ Extension \ PrependExtensionInterface thisПакет позволит вам сделать волшебство.так что вы можете написать несколько строк кода, аналогичных этому, и заменить свое пространство имен:
<?php
namespace NameSpaceBundle\CoreBundle\DependencyInjection;
use Exception;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
/**
* Class NameSpaceBundleExtension Configurations of the Core
* @package NameSpaceBundle\CoreBundle\DependencyInjection
*/
class NameSpaceBundleExtension extends Extension implements PrependExtensionInterface
{
/**
* {@inheritdoc}
* @param array $configs
* @param ContainerBuilder $container
* @throws Exception
*/
public function load(array $configs, ContainerBuilder $container)
{
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$loader->load('routing.yml');
$this->processConfiguration(new Configuration(), $configs);
}
/**
* {@inheritdoc}
* @param ContainerBuilder $container
*/
public function prepend(ContainerBuilder $container)
{
$configs = $container->getExtensionConfig($this->getAlias());
$this->processConfiguration(new Configuration(), $configs);
$doctrineConfig = [];
$doctrineConfig['orm']['mappings'][] = array(
'name' => 'NameSpaceBundle',
'is_bundle' => true,
'type' => 'annotation',
'prefix' => 'NameSpaceBundle\CoreBundle\Entity'
);
$container->prependExtensionConfig('doctrine', $doctrineConfig);
}
/**
* {@inheritdoc}
* @return string
*/
public function getAlias()
{
return 'bundelName_core';
}
}
Просмотрите ваш service.yaml, размещенный в Resouces / config, и теперь вы можете внедрять не только EntityManagerInterface.
services:
_defaults:
autowire: false # Automatically injects dependencies in your services.
autoconfigure: false # Automatically registers your services as commands, event subscribers, etc.
public: false
NameSpaceBundle\CoreBundle\Manager\Company:
public: false
class: NameSpaceBundle\CoreBundle\Doctrine\CompanyManager
arguments:
- '@doctrine'
- '\NameSpaceBundle\CoreBundle\Entity\Company'
Также этот пример похож на некоторые пакеты FriendsOfSymfony и пакет, о котором я говорил вам ранее.
PD.Извините за мой английский не мой родной язык