/**
  * Parse interface info
  *
  * @return ProxyClassInfo
  * @throws InitiallyRpcException
  */
 protected function parseProxyClassInfo()
 {
     $arr = explode("\\", $this->interface);
     $name = array_pop($arr);
     $matches = array();
     if (!preg_match($this->getClassNameRule(), $name, $matches)) {
         throw new InitiallyRpcException("Proxy builder error: interface name must ending of '{$this->interfaceEndOf}' like 'DemoService{$this->interfaceEndOf}'");
     }
     $replace = $this->config->getReplace();
     $replaceKey = $this->service->getReplaceKey();
     if (!empty($arr) && !empty($replace) && isset($replace[$replaceKey])) {
         foreach ($arr as $key => $value) {
             if (isset($replace[$replaceKey][$value])) {
                 $arr[$key] = $replace[$replaceKey][$value];
             }
         }
     }
     $namespace = implode("\\", $arr);
     $info = new ProxyClassInfo();
     $info->setNamespace($namespace);
     $info->setClassName($matches[1]);
     return $info;
 }