ホームページ >バックエンド開発 >PHPチュートリアル >mvc における C と V の保守性と堅牢な再利用性について説明します。

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

WBOY
WBOYオリジナル
2016-06-23 13:41:111158ブラウズ

mvc は誰もがよく知っており、基本的な構造も非常に明確です。

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

追加と変更に 1 つのページを使用すると、コントロール レイヤーを追加するか変更するか、コントロール レイヤーを追加または変更した後にどのページにジャンプするかを決定するための論理的な判断をビュー内に書きすぎてしまいます。 。 (これらには、表示レイヤーで action value または name 属性を指定するか、get または post を通じてこれらの判断を送信して、それらを別の制御レイヤーに渡す必要があります。)

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

例: コントロール層 // はメンバーを変更するために記述されていますが、その中の一部の関数はメンバー データを変更するものではありません。プロジェクト内の他の場所のコードも同様、またはそれ以上です。メソッドに入るたびにプロセスが実行するのは、どれを実行するか、どこで終了するかだけです。ジャンプするときに view(XXX.php) をコントローラーの名前に置き換えることもできます。これにより、上で述べたことを繰り返し、コード分析の別のループに入ることができます。メンテナンスが非常に不便です。このアイデアをどのように処理する必要がありますか?また、今後の改善のためにどのような点に注意を払う必要がありますか? 建設的な提案をいただければ幸いです。ありがとうございます。

//----------------修改成员数据-------------------------------		public function alterInfo()	{		$strAction = "";		$teamname=$_SESSION['teamname'];		if ($_GET){			$inUserid = $_GET['id'];				$data['userid'] = $inUserid;			}		if($_POST){			// var_dump($_POST);			// die();			$userid = $_POST['userid'];			$mobile = $_POST['mobile'];			$realname = $_POST['realname'];			$zhengjian = trim($this->input->post('zhengjian'));			//$idnumber = $_POST['idnumber'];			$idnumber = trim($this->input->post('idnu'));			$address = $_POST['address'];			$zipcode = $_POST['zipcode'];						$clothsize = $_POST['clothsize'];			$data['strClothOpt'] = $this->Common_model->getClothOpy($clothsize);			$birthday = trim($this->input->post('birthday')); 						$passportnu = trim($this->input->post('passportnu'));			$gender = trim($this->input->post('gender'));			if ($_FILES["idnumscan"]["error"] > 0)			  {			  	$data['error'] = $_FILES["idnumscan"]["error"] . "<br />";			  	$userpic = $_POST['idnumscans'];			  }			else			  {			  	$data['filename'] = $_FILES["idnumscan"]["name"];			  	$data['filetype'] = $_FILES["idnumscan"]["type"];			  	$data['filesize'] = ($_FILES["idnumscan"]["size"] / 1024) . " Kb";			  	$data['filepath'] = $_FILES["idnumscan"]["tmp_name"];					$excelname=iconv("UTF-8","gb2312", $_FILES["idnumscan"]["name"]);					$userpic = $_FILES["idnumscan"]["name"];					move_uploaded_file($_FILES["idnumscan"]["tmp_name"],"upload/image/".$excelname);				}			if($_POST['action']=="add"){					$strAction = $teamname;					$data['userid'] = "";				 	//倒数第二位是奇数为男性,偶数为女性				 	$gender = substr($idnumber,16,1)%2;				 	//var_dump($gender);				 	$teamid = $_SESSION['clubid'];				 	$usertype=0;				 	$this->load->model('Member_model');					$rowIsReg = $this->Member_model->isRegistered($idnumber,$clubid);				 	if($rowIsReg){				 			echo "<script>alert('这个身份证号已经在该俱乐部被注册过!')</script>";							//redirect(base_url()."member");				 	}else{						$res = $this->Member_model->insMember($mobile, $realname, $idnumber, $gender, $address, $zipcode, $clubid, $usertype,$userpic,$clothsize);						if($res){							echo "<script>alert('新队员创建完成!')</script>";							redirect(base_url()."team");							}					}				}			if($_POST['action']=="alert"){			    // var_dump($zhengjian);			    // die();					$strAction = $teamname;					$data['userid'] = $userid;					if($idnumber!='' and $zhengjian =='1'){   //用身份证增加或修改的						//倒数第二位是奇数为男性,偶数为女性					 	$gender = substr($idnumber,16,1)%2;					 	//var_dump($gender);					 	$clubid = $_SESSION['clubid'];					 	$usertype=0;					 	$this->load->model('Member_model');					 	$rowIsReg = $this->Member_model->isRegisteredtoo($idnumber,$clubid,$userid);					 	if($rowIsReg){					 			echo "<script>alert('不能修改为".$idnumber.".这个身份证号已经在该俱乐部被注册过!')</script>";								//redirect(base_url()."member");					 	}else{							$res = $this->Member_model->alertMember($mobile, $realname, $idnumber, $gender, $address, $zipcode, $clubid, $usertype,$userpic,$clothsize,$userid,$birthday,$passportnu);							if($res){								echo "<script>alert('队员".$realname."数据修改成功!')</script>";								redirect(base_url()."team");							}						}					}else{       //用护照增加或修改的						// echo "111111111111";						// die();						$clubid = $_SESSION['clubid'];					 	$usertype=0;						$res = $this->Member_model->alertMemberpassportnu($mobile, $realname, $idnumber, $gender, $address, $zipcode, $clubid, $usertype,$userpic,$clothsize,$userid,$birthday,$passportnu,$gender);							if($res){								echo "<script>alert('队员".$realname."数据修改成功!')</script>";								redirect(base_url()."team");					}				}			}			$arrMember['userid'] = $userid;		  $arrMember['mobile'] = $mobile; 		  $arrMember['realname'] = $realname; 		  $arrMember['idnumber'] = $idnumber; 		  $arrMember['address'] = $address; 		  $arrMember['zipcode'] = $zipcode;		  $arrMember['userpic'] = $userpic;		  $arrMember['clothsize'] = $clothsize;		  //var_dump($arrMember);		}else{		//-----显示队员信息			$strAction = $_SESSION['teamname'];		$arrMember = $this->Team_model->getMemberInfo($inUserid);		$data['strClothOpt'] = $this->Common_model->getClothOpy($arrMember['clothsize']);				}			$data['straction'] = "alert";		$data['arrMember'] = $arrMember;		$data['strAction'] = $strAction;		$this->load->view('head');		$this->load->view('player',$data);		$this->load->view('foot');			}




ディスカッション (解決策) への返信

モジュール設計の原則によれば、入口と出口は 1 つです。 1 つのモジュールで 1 つのことを完了します
明らかに設計に一貫性がありません

$inUserid = $_GET['id'];

合法性を判断する必要はありませんか?とても危険ですか?

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

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

これで分岐が作成され、関数はモジュールに従って処理されます。

先輩二人、ありがとうございます。これは以前からの古いプログラムで、いつも何かが間違っていると感じています。お二人からの指摘で、わかりました、ありがとうございます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:php-cp の概要次の記事:php-cp の概要