/** * Compose action view related data. * @param string $moduleName * @param string $controllerName * @param string $actionName * @return array Array with action view class name, action view file and absolute action view file path. */ private function composeActionViewData($moduleName, $controllerName, $actionName) { //ucfirst action view class name $controllerName = $this->fromHyphenToCamelCase($controllerName, FALSE); $actionName = $this->fromHyphenToCamelCase($actionName, TRUE); $actionViewData = $this->composeActionViewFileData($moduleName, $controllerName, $actionName); $actionViewClassName = $actionViewData[0]; $actionViewFile = $actionViewData[1]; $absActionViewFile = $actionViewData[2]; if (file_exists($absActionViewFile)) { return array(0 => $actionViewClassName, 1 => $actionViewFile, 2 => $absActionViewFile); } //consider that $controllerName uses hyphen $controllerName = $this->fromCamelCaseToHyphen($controllerName); $actionViewData = $this->composeActionViewFileData($moduleName, $controllerName, $actionName); $actionViewClassName = $actionViewData[0]; $actionViewFile = $actionViewData[1]; $absActionViewFile = $actionViewData[2]; if (file_exists($absActionViewFile)) { return array(0 => $actionViewClassName, 1 => $actionViewFile, 2 => $absActionViewFile); } //or lower case for first word $controllerName = $this->fromHyphenToCamelCase($controllerName, FALSE); $actionName = $this->fromHyphenToCamelCase($actionName, FALSE); $actionViewData = $this->composeActionViewFileData($moduleName, $controllerName, $actionName); $actionViewClassName = $actionViewData[0]; $actionViewFile = $actionViewData[1]; $absActionViewFile = $actionViewData[2]; if (file_exists($absActionViewFile)) { return array(0 => $actionViewClassName, 1 => $actionViewFile, 2 => $absActionViewFile); } //consider that $controllerName uses hyphen and lower case for first word $controllerName = $this->fromCamelCaseToHyphen($controllerName); $actionName = $this->fromHyphenToCamelCase($actionName, FALSE); $actionViewData = $this->composeActionViewFileData($moduleName, $controllerName, $actionName); $actionViewClassName = $actionViewData[0]; $actionViewFile = $actionViewData[1]; $absActionViewFile = $actionViewData[2]; if (file_exists($absActionViewFile)) { return array(0 => $actionViewClassName, 1 => $actionViewFile, 2 => $absActionViewFile); } //fianlly, index_actionView.php $name = $this->fromHyphenToCamelCase($controllerName, TRUE) . "_" . $this->fromHyphenToCamelCase($actionName, TRUE); $actionViewClassName = $name . self::VIEW_POSTFIX; $actionViewFile = "project" . DIRECTORY_SEPARATOR . "modules" . DIRECTORY_SEPARATOR . $moduleName . DIRECTORY_SEPARATOR . "views" . DIRECTORY_SEPARATOR . $actionViewClassName . ".php"; $absActionViewFile = PathService::getInstance()->getRootDir() . DIRECTORY_SEPARATOR . $actionViewFile; return array(0 => $actionViewClassName, 1 => $actionViewFile, 2 => $absActionViewFile); }