ホームページ  >  記事  >  バックエンド開発  >  mvc の C と V の保守性と堅牢な再利用性について説明します。

mvc の C と V の保守性と堅牢な再利用性について説明します。

WBOY
WBOYオリジナル
2016-06-13 12:14:17985ブラウズ

mvc の C と V の保守性と堅牢な再利用性について説明します

この投稿の最終編集者は A9925 2015-01-17 17:49:33 基本的な構造である mvc については誰もがよく知っています。とても明確です。

今日は、
コントロール層、コントローラー内で適切なメソッドの数、
、および表示層を複数回呼び出すことができるかどうか (追加など) について説明します。ユーザーページとユーザーページの変更は基本的に同じです)。

1ページで追加・変更すると、どうしてもコントロール層を追加するか変更するかの論理判断をビュー内に書きすぎてしまい、追加・変更完了後にジャンプしてしまいます。対応する制御層。 (これらには、表示レイヤーでアクション値または名前属性を指定するか、get または post を通じてこれらの判断を送信して、別の制御レイヤーに渡す必要があります。)

古いシステムを保守しているため、非常に困惑しています。 。
古いプロジェクトのコードをどのように改善する必要があるのか​​を確認するために、コード スニペットを投稿します。メンテナンスの際には、関数を入力するたびに、その関数が何を行うかを常に分析する必要があるからです。コードを読む時間はあまりにも無駄です。ぜひご教示ください。

例: コントロール層 // はメンバーを変更するために記述されていますが、その中の一部の関数はメンバー データを変更するものではありません。これはプロジェクト内の他の場所のコードも同様です。さらに、メソッドに入るたびに、どれを実行するか、どこから飛び出すかを知るためのプロセスを経る必要があります。ジャンプするときに view(XXX.php) をコントローラーの名前に置き換えることもできます。これにより、上で述べたことを繰り返し、コード分析の別のループに入ることができます。メンテナンスが非常に不便です。このアイデアをどのように処理する必要があるか、また今後の改善のためにどのような点に注意する必要がありますか? 建設的な提案をいただければ幸いです。
<br />//----------------修改成员数据-------------------------------<br />		public function alterInfo()<br />	{<br /><br /><br />		$strAction = "";<br />		$teamname=$_SESSION['teamname'];<br />		if ($_GET){<br />			$inUserid = $_GET['id'];	<br />			$data['userid'] = $inUserid;<br />			}<br />		if($_POST){<br /><br />			// var_dump($_POST);<br />			// die();<br /><br /><br /><br />			$userid = $_POST['userid'];<br />			$mobile = $_POST['mobile'];<br />			$realname = $_POST['realname'];<br />			$zhengjian = trim($this->input->post('zhengjian'));<br />			//$idnumber = $_POST['idnumber'];<br />			$idnumber = trim($this->input->post('idnu'));<br />			$address = $_POST['address'];<br />			$zipcode = $_POST['zipcode'];<br />			<br />			$clothsize = $_POST['clothsize'];<br />			$data['strClothOpt'] = $this->Common_model->getClothOpy($clothsize);<br /><br /><br />			$birthday = trim($this->input->post('birthday')); <br />			<br />			$passportnu = trim($this->input->post('passportnu'));<br />			$gender = trim($this->input->post('gender'));<br /><br />			if ($_FILES["idnumscan"]["error"] > 0)<br />			  {<br />			  	$data['error'] = $_FILES["idnumscan"]["error"] . "<br />";<br />			  	$userpic = $_POST['idnumscans'];<br />			  }<br />			else<br />			  {<br />			  	$data['filename'] = $_FILES["idnumscan"]["name"];<br />			  	$data['filetype'] = $_FILES["idnumscan"]["type"];<br />			  	$data['filesize'] = ($_FILES["idnumscan"]["size"] / 1024) . " Kb";<br />			  	$data['filepath'] = $_FILES["idnumscan"]["tmp_name"];<br />					$excelname=iconv("UTF-8","gb2312", $_FILES["idnumscan"]["name"]);<br />					$userpic = $_FILES["idnumscan"]["name"];<br />					move_uploaded_file($_FILES["idnumscan"]["tmp_name"],"upload/image/".$excelname);<br />				}<br />			if($_POST['action']=="add"){<br />					$strAction = $teamname;<br />					$data['userid'] = "";<br />				 	//倒数第二位是奇数为男性,偶数为女性<br />				 	$gender = substr($idnumber,16,1)%2;<br />				 	//var_dump($gender);<br />				 	$teamid = $_SESSION['clubid'];<br />				 	$usertype=0;<br />				 	$this->load->model('Member_model');<br />					$rowIsReg = $this->Member_model->isRegistered($idnumber,$clubid);<br />				 	if($rowIsReg){<br />				 			echo "<script>alert('这个身份证号已经在该俱乐部被注册过!')</script>";<br />							//redirect(base_url()."member");<br />				 	}else{<br />						$res = $this->Member_model->insMember($mobile, $realname, $idnumber, $gender, $address, $zipcode, $clubid, $usertype,$userpic,$clothsize);<br />						if($res){<br />							echo "<script>alert('新队员创建完成!')</script>";<br />							redirect(base_url()."team");<br />							}<br />					}<br />				}<br />			if($_POST['action']=="alert"){<br /><br />			    // var_dump($zhengjian);<br />			    // die();<br /><br /><br />					$strAction = $teamname;<br />					$data['userid'] = $userid;<br />					if($idnumber!='' and $zhengjian =='1'){   //用身份证增加或修改的<br />						//倒数第二位是奇数为男性,偶数为女性<br />					 	$gender = substr($idnumber,16,1)%2;<br />					 	//var_dump($gender);<br />					 	$clubid = $_SESSION['clubid'];<br />					 	$usertype=0;<br />					 	$this->load->model('Member_model');<br />					 	$rowIsReg = $this->Member_model->isRegisteredtoo($idnumber,$clubid,$userid);<br /><br />					 	if($rowIsReg){<br />					 			echo "<script>alert('不能修改为".$idnumber.".这个身份证号已经在该俱乐部被注册过!')</script>";<br />								//redirect(base_url()."member");<br />					 	}else{<br /><br />							$res = $this->Member_model->alertMember($mobile, $realname, $idnumber, $gender, $address, $zipcode, $clubid, $usertype,$userpic,$clothsize,$userid,$birthday,$passportnu);<br />							if($res){<br />								echo "<script>alert('队员".$realname."数据修改成功!')</script>";<br />								redirect(base_url()."team");<br />							}<br />						}<br />					}else{       //用护照增加或修改的<br /><br />						// echo "111111111111";<br />						// die();<br />						$clubid = $_SESSION['clubid'];<br />					 	$usertype=0;<br />						$res = $this->Member_model->alertMemberpassportnu($mobile, $realname, $idnumber, $gender, $address, $zipcode, $clubid, $usertype,$userpic,$clothsize,$userid,$birthday,$passportnu,$gender);<br />							if($res){<br />								echo "<script>alert('队员".$realname."数据修改成功!')</script>";<br />								redirect(base_url()."team");<br />					}<br />				}<br /><br />			}<br />			$arrMember['userid'] = $userid;<br />		  $arrMember['mobile'] = $mobile; <br />		  $arrMember['realname'] = $realname; <br />		  $arrMember['idnumber'] = $idnumber; <br />		  $arrMember['address'] = $address; <br />		  $arrMember['zipcode'] = $zipcode;<br />		  $arrMember['userpic'] = $userpic;<br />		  $arrMember['clothsize'] = $clothsize;<br />		  //var_dump($arrMember);<br />		}else{<br />		//-----显示队员信息	<br />		$strAction = $_SESSION['teamname'];<br />		$arrMember = $this->Team_model->getMemberInfo($inUserid);<br />		$data['strClothOpt'] = $this->Common_model->getClothOpy($arrMember['clothsize']);		<br />		}<br />	<br />		$data['straction'] = "alert";<br />		$data['arrMember'] = $arrMember;<br />		$data['strAction'] = $strAction;<br />		$this->load->view('head');<br />		$this->load->view('player',$data);<br />		$this->load->view('foot');<br />		<br />	}<br />




-----ソリューションアイデア--------------------- -
モジュール設計原則に従って、入口と出口は 1 つずつあります。 1 つのモジュールで 1 つのことを完了します
明らかに設計に一貫性がありません

-----解決策のアイデア----- ---- --
$inUserid = $_GET['id'];

パラメータの正当性を判断する必要はありませんか?とても危険です。

if($_POST['action']=="追加"){ . 。 。 。

if($_POST['action']=="alert"){

分岐を作成しただけで、モジュールに従って関数を分離していません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。