예제 #1
0
 /**
  * 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}'");
                 }
             }
         }
     }
 }