getRequest()->getActionName(); $sectionName = null; try { if (preg_match("/^list/", $actionName)) { $sectionName = preg_replace("/list/", "", $actionName); return $this->generaSectionClass($sectionName)->lista(); } if (preg_match("/^get/", $actionName)) { $sectionName = preg_replace("/get/", "", $actionName); return $this->generaSectionClass($sectionName)->get(); } if (preg_match("/^save|^salva/", $actionName)) { $sectionName = preg_replace("/save|salva/", "", $actionName); return $this->generaSectionClass($sectionName)->save(); } if (preg_match("/^(?=.*?delete)(?!.*?select).*$/", $actionName)) { $sectionName = preg_replace("/delete/", "", $actionName); return $this->generaSectionClass($sectionName)->delete(); } if (preg_match("/^deleteselect/", $actionName)) { $sectionName = preg_replace("/deleteselect/", "", $actionName); return $this->generaSectionClass($sectionName)->deleteSelect(); } if (preg_match("/^(?=.*?setstate)(?!.*?select).*$/", $actionName)) { $sectionName = preg_replace("/setstate/", "", $actionName); return $this->generaSectionClass($sectionName)->setstate(); } if (preg_match("/^setstateselect/", $actionName)) { $sectionName = preg_replace("/setstateselect/", "", $actionName); return $this->generaSectionClass($sectionName)->setstateSelect(); } /** * Gestisce le funzione custom di un report se vengono separate dal trattino * con la stringa composta cosi: "-" */ if (preg_match("/-/", $actionName)) { $sectionName = explode('-', $actionName)[0]; $functionName = explode('-', $actionName)[1]; // non funzionante con php 5 // [$sectionName, $functionName] = explode('-', $actionName); return $this->generaSectionClass($sectionName)->$functionName(); } } catch (Exception $e) { try { parent::__call($actionName, null); } catch (Exception $e2) { throw new Exception($e->getMessage()); } } } private function generaSectionClass($sectionName) { if (!isset($this->_sections[$sectionName])) { $className = $this->getSectionClassName($sectionName); $this->_sections[$sectionName] = new $className($this); } return $this->_sections[$sectionName]; } private function getSectionClassName($sectionName) { return implode('_', array( 'Application', 'ControllerSection', ucfirst($this->getRequest()->getModuleName()), ucfirst($this->getRequest()->getControllerName()), ucfirst($sectionName))); } }