Heim  >  Artikel  >  Backend-Entwicklung  >  今日开始带两个实习生做php(2)

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

WBOY
WBOYOriginal
2016-06-13 11:18:41593Durchsuche

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

今天开始带两个实习生做php(1)的框架个人觉得太垃圾了,于是重新写了一个。

首先是index.php,工程的入口。

index.php

?

<?php $url = 'app/login/Controller/LoginController.php?m=init';?>      <meta http-equiv="refresh" content="0;url=<?php echo $url; ?>">      

?可以从代码看到这个php跳转到「app/login/Controller/LoginController.php?m=init」url上

那就看下LoginController.php

?

<?phprequire_once ($_SERVER['DOCUMENT_ROOT'] . '/demo/base/BaseController.php');require_once ($_SERVER['DOCUMENT_ROOT'] . '/demo/app/login/service/LoginService.php');class LoginController extends BaseController {	/**	 * ログイン初期化の処理	 */	public function init() {		// フォームを取得する		$form = parent :: post2Form(APP_LOGIN);		// smartyを作成する		$smarty = parent :: getSmarty();		$smarty->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

<?phprequire_once ($_SERVER['DOCUMENT_ROOT'] . '/demo/common/Const.php');require_once (COMMON_PATH . 'StringUtils.php');require_once (SMARTY_PATH . 'Smarty.class.php');class BaseController {	/**	 * smartyを初期化する	 */	public function getSmarty() {		$smarty = new Smarty;		$smarty->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

?

<?php /* プロジェクト名(共通用) */define('P_NAME', 'p_name');define('P_NAME_VAL', 'demo');/* ルートパス(共通用)*/define('ROOT_PATH', $_SERVER['DOCUMENT_ROOT'] . '/' . P_NAME_VAL . '/');define('COMMON_PATH', $_SERVER['DOCUMENT_ROOT'] . '/' . P_NAME_VAL . '/common/');define('APP_PATH', $_SERVER['DOCUMENT_ROOT'] . '/' . P_NAME_VAL . '/app/');/* SMARTYパス(共通用) */define('SMARTY_PATH', ROOT_PATH . 'smarty/');define('TEMPLATE_DIR', SMARTY_PATH . 'Templates/');define('COMPILE_DIR', SMARTY_PATH . 'Templates_c/');define('CONFIG_DIR', SMARTY_PATH . 'Configs/');define('CACHE_DIR', SMARTY_PATH . 'Cache/');/* SMARTY標記(共通用) */define('LEFT_DELIMITER', '[{');define('RIGHT_DELIMITER', '}]');/* 定数(String) */define('FORM', 'form');/* メソッド名 */define('METHOD_INIT', 'init');define('METHOD_START', 'start');/* 機能ID */define('APP_LOGIN', 'login');?>

?工具文件:

?

StringUtils.php

?

<?phpclass StringUtils {	/**	 * 文字列がemptyの判断	 */	public static function isEmpty($str) {		if (isset ($str) && !empty ($str)) {			return false;		}		return true;	}}?>

?

?

?html代码

login.htm

			<title>ああ</title>		<style>			table{				font-size:15px;				font-family:MS ゴシック;				border-collapse:collapse;			}			body{				font-size:15px;				font-family:MS ゴシック;			}			.bordertable th{				border:1px solid lightgreen!important;				background-color:lightgreen;				text-align:right;			}			.bordertable td{				border:1px solid lightgreen!important			}		</style>		<script type="text/javascript" src="/demo/smarty/Templates/js/jquery-1.9.1.js"></script>		<script type="text/javascript">			$(document).ready(function() {				// 開始ボタンを押す				$("#startBtn").click(function() {					$("#loginForm").prop("action", "/demo/app/login/Controller/LoginController.php?m=start");					$("#loginForm").submit();				});			});		</script>				

2013年春のアンケート調査

社員番号

?

?

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

为完待续。

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

?

1 楼 houxinyou 2013-03-22  
网上有那么多现成的PHP框架为什么不用呢?

2 楼 guyanliang 20 小时前  
zend-framework 干嘛不用呢
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn