/** * use for remote rpc call * @param String $asModule * @param String $asMethod * @return array("status":boolean, "return":mixed, "control":object); */ public function runService($asModule, $asMethod, $aData = array()) { $this->bIsService = true; $sModule = empty($asModule) ? "default" : $asModule; $sMethod = empty($asMethod) ? "default" : $asMethod; //clean method $sMethodName = ucwords($sMethod); $sMethodName = str_replace(" ", "", $sMethodName); FlexiLogger::debug(__METHOD__, "module: " . $sModule . ", method: " . $sMethod); //throw new Exception("About to run: " . $sModule . ", method: " . $sMethodName); $oClass =& self::getControllerInstance($sModule, null, $sMethodName, null); self::$oActiveControl = $oClass; if (is_null($oClass)) { FlexiLogger::error(__METHOD__, "module: " . $sModule . " does not exists"); throw new Exception("Unknown module: " . $sModule); } FlexiLogger::debug(__METHOD__, "calling runService"); //render view as "body" var $mResult = $oClass->runService($sMethod, null, $aData); //manually render layout FlexiLogger::debug(__METHOD__, "called runService"); return array("status" => true, "return" => $mResult, "control" => &$oClass); }