/** * @param CouchDBClient $couchClient * @param Configuration $config * @param EventManager $evm */ public function __construct(CouchDBClient $couchClient, Configuration $config = null, EventManager $evm = null) { $this->couchDBClient = $couchClient; $this->config = $config ?: new Configuration(); $this->evm = $evm ?: new EventManager(); $this->metadataFactory = new ClassMetadataFactory($this); $this->unitOfWork = new UnitOfWork($this); $this->proxyFactory = new Proxy\ProxyFactory($this, $this->config->getProxyDir(), $this->config->getProxyNamespace(), $this->config->getAutoGenerateProxyClasses()); }