/** * 生成静态页面 * @param type $arg 生成静态数据 * array(控制器名,方法名,表态数据,保存表态文件路径) * array(news,show,1,'h/b/hd.html');表示生成news控制器中的show方法生成ID为1的文章 */ public function create($control, $method, $data) { $control = rtrim($control, C("CONTROL_FIX")); $file = get_control_file($control . C('CONTROL_FIX')); load_file($file[0]); $className = $file[1] . C("CONTROL_FIX"); $obj = new $className(); // $obj->$method(); // $GLOBALS['html_control'] = $control; // $GLOBALS['html_method'] = $method; foreach ($data as $v) { //设置GET参数 ob_start(); foreach ($v as $m => $n) { $_GET[$m] = $n; } if (!isset($v['html_file'])) { //验证是否含有html_file内容,即生成文件的名子 error(L("html_create_error1"), false); return false; } $dirname = dirname($v['html_file']); if (!$this->createDir($dirname)) { //创建一下生成静态的目录 error(L("html_create_error2")); return false; } $obj->{$method}(); //执行控制器方法 $content = ob_get_clean(); file_put_contents($v['html_file'], $content); } return true; }
/** * 自动载入函数 */ private static function autoload($classname) { if (substr($classname, -7) == 'Control' && strlen($classname) > 7) { $classFile = get_control_file($classname); $classFile = $classFile[0]; } else { $classFile = PATH_HD . '/libs/bin/' . $classname . '.class.php'; } if (C("USR_FILES." . $classname)) { $classFile = C("USR_FILES." . $classname); } load_file($classFile); }
/** * 加载控制器 * @param type $control 控制器名,可以为module.control形式调用其他模块的控制器 */ function Control($control) { $controlArr = get_control_file($control); static $_control = array(); $name = md5($controlArr[0]); if (isset($_control[$name])) { return $_control[$name]; } //控制器文件 $control_file = $controlArr[0]; load_file($control_file); $controlClass = $controlArr[1] . "Control"; if (class_exists($controlClass, false)) { $_control[$name] = new $controlClass(); return $_control[$name]; } else { error($control_file . L("functions_control_error") . $control[1], false); //" 控制器文件中没有定义类" } }