• 技术文章 >后端开发 >php教程

    今日开始带两个实习生做php(2)

    2016-06-13 11:18:41原创276
    今天开始带两个实习生做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

    			ああ							
    

    2013年春のアンケート調査

    社員番号

    ?

    ?

    ?到目前为止,form实例化,service调用已经封装,

    为完待续。

    如果有好的建议请大家给指导下,我以前没有做过php,所以如果有错误请见谅。

    ?

    1 楼 houxinyou 2013-03-22

    网上有那么多现成的PHP框架为什么不用呢?

    2 楼 guyanliang 20 小时前

    zend-framework 干嘛不用呢

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:smarty form gt NAME define
    千万级数据并发解决方案

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• PHP函数及作用域知识详解• PHP中SESSION不能跨页传递有关问题的解决方法• php的静态方法调用有关问题,求大牛解答• 关于一次下传多个图片的插件有没有• 搞了两天,没有弄成,宣布失败,求高手帮忙!
    1/1

    PHP中文网