/** * Builds a Client based on the connections given. * * @return ClientInterface */ public function build() { $connectionManager = new ConnectionManager(); foreach ($this->config['connections'] as $alias => $conn) { $config = isset($this->config['connections'][$alias]['config']) ? $this->config['connections'][$alias]['config'] : Configuration::create()->withTimeout($this->getDefaultTimeout()); $connectionManager->registerConnection($alias, $conn['uri'], $config); if (isset($conn['is_master']) && $conn['is_master'] === true) { $connectionManager->setMaster($alias); } } $ev = null; if (isset($this->config['event_listeners'])) { $ev = new EventDispatcher(); foreach ($this->config['event_listeners'] as $k => $callbacks) { foreach ($callbacks as $callback) { $ev->addListener($k, $callback); } } } return new $this->config['client_class']($connectionManager, $ev); }