今日开始带两个实习生做php(2)
今天开始带两个实习生做php(2)今天开始带两个实习生做php(1)的框架个人觉得太垃圾了,于是重新写了一个。
首先是index.php,工程的入口。
index.php
?
?可以从代码看到这个php跳转到「app/login/Controller/LoginController.php?m=init」url上
那就看下LoginController.php
?
assign(FORM, $form); $smarty->display('view/login/login.htm'); } /** * 開始ボタンを押す処理 */ public function start() { // フォームを取得する $form = parent :: post2Form(APP_LOGIN); // Serviceを呼び出す parent :: doService(APP_LOGIN, METHOD_START, $form, false); // smartyを作成する $smarty = parent :: getSmarty(); $smarty->assign(FORM, $form); $smarty->display('view/login/login.htm'); } } // Controllerをインスタンスする $loginController = new LoginController; // メソッドを取得する $method = $loginController->getMethod(); // 実行する $loginController-> $method (); ?>
?这个代码里面有很多用到了父类的方法,我们再看下父类吧
?
BaseController.php
template_dir = TEMPLATE_DIR; $smarty->compile_dir = COMPILE_DIR; $smarty->config_dir = CONFIG_DIR; $smarty->cache_dir = CACHE_DIR; $smarty->left_delimiter = LEFT_DELIMITER; $smarty->right_delimiter = RIGHT_DELIMITER; // プロジェクト名を設定する $smarty->assign(P_NAME, P_NAME_VAL); return $smarty; } /** * REQUEST_URIからメソッドを取得 */ public function getMethod() { $uri = $_SERVER['REQUEST_URI']; // uriがempty以外の場合 if (!StringUtils :: isEmpty($uri)) { $arrUrl = parse_url($_SERVER['REQUEST_URI']); // uri中メソッド名を設定設定する場合 if (!StringUtils :: isEmpty($uri)) { $arrParams = null; parse_str($arrUrl['query'], $arrParams); return $arrParams['m']; // uri中メソッド名を設定しない場合 } else { return METHOD_INIT; } // uriがemptyの場合 } else { return METHOD_INIT; } } /** * $_POST中の値からformにセットする */ public function post2Form($name) { require_once (APP_PATH . $name . '/form/' . $name . 'Form.php'); $formName = $name . 'Form'; // formを初期化する $form = new $formName; // formのすべての変数を取得する $class_var_arr = get_class_vars(get_class($form)); foreach ($class_var_arr as $name => $value) { if (!StringUtils :: isEmpty(@ $_POST[$name])) { $form-> $name = @ $_POST[$name]; } } return $form; } /** * $_GET中の値からformにセットする */ public function get2Form(& $form) { // formのすべての変数を取得する $class_var_arr = get_class_vars(get_class($form)); foreach ($class_var_arr as $name => $value) { if (!StringUtils :: isEmpty(@ $_GET[$name])) { $form-> $name = @ $_GET[$name]; } } } /** * Serviceを呼び出す * * @param String $name 機能名 * @param String $methodName 呼び出されたメソッド名 * @param Object $form フォーム * @param boolean $isOpenTrans true:トランザクション必要 false:トランザクション必要がない */ public function doService($name, $methodName, & $form, $isOpenTrans) { require_once (APP_PATH . $name . '/service/' . $name . 'Service.php'); // TODO $isOpenTrans $serviceName = $name . 'Service'; $service = new $serviceName; $service-> $methodName ($form); // TODO $isOpenTrans } } ?>
?常量文件
?
Const.php
?
?工具文件:
?
StringUtils.php
?
?
?
?html代码
login.htm
ああ
PHP之友评论