Пример #1
0
 /**
  * Create a raw entity manager
  *
  * Do not construct an entity manager directly or it will lack access interceptors which are responsible for
  * caching and event dispatching.
  *
  * @see EntityManager::build()
  *
  * @param DriverInterface        $driver
  * @param MapperInterface        $mapper
  * @param SerialiserMap          $serialiser_map
  * @param KeySchemeInterface     $key_scheme
  * @param Configuration          $configuration
  * @param EntityCachingInterface $cache
  */
 protected function __construct(DriverInterface $driver, MapperInterface $mapper, SerialiserMap $serialiser_map = null, KeySchemeInterface $key_scheme = null, Configuration $configuration = null, EntityCachingInterface $cache = null)
 {
     $this->driver = $driver;
     $this->mapper = $mapper;
     $this->key_scheme = $key_scheme ?: $driver->getPreferredKeyScheme();
     $this->config = $configuration ?: new Configuration();
     $this->cache = $cache ?: new EphemeralEntityCache();
     if ($serialiser_map) {
         $this->serialiser_map = $serialiser_map;
     } else {
         $this->serialiser_map = new SerialiserMap();
         $this->serialiser_map->addSerialiser(new JsonSerialiser());
     }
     $this->instance_id = uniqid();
     $this->registerDefaultSubscribers();
 }