今天开始带两个实习生做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年春のアンケート調査			社員番号					user_id}]>
?
?
?到目前为止,form实例化,service调用已经封装,
为完待续。
如果有好的建议请大家给指导下,我以前没有做过php,所以如果有错误请见谅。
?
1 楼    houxinyou    2013-03-22              网上有那么多现成的php框架为什么不用呢?
2 楼    guyanliang    20 小时前              zend-framework 干嘛不用呢
   
 
   