/** * Executes load<Entity>ById & get<Entity>List & create<Entity> methods **/ public function __call($method, $args) { if (preg_match('/load(\\w+)ById/', $method, $match)) { return $this->_mapper->loadById(strtolower($match[1]), $args[0]); } else { if (preg_match('/get(\\w+)List/', $method, $match)) { return $this->_mapper->getList(strtolower($match[1])); } else { if (preg_match('/create(\\w+)/', $method, $match)) { return $this->_mapper->createEntity(strtolower($match[1]), $args[0], @$args[1]); } else { if (isset($this->_extension[strtolower($method)])) { $extension = strtolower($method); if (!is_object($this->_extension[$extension])) { $extension_class = 'RM_Gpc_Extension_' . ucfirst($extension); $this->_extension[$extension] = new $extension_class($this->_mapper); } return $this->_extension[$extension]; } else { throw new Exception("Unknown method `{$method}'"); } } } } }