PHP之MVC學習

有很長一段時間沒有更新博客了,近一段時間開始重新梳理知識點和寫博客了,新的博客地址:歡迎訪問

MVC:model view controller(模型,視圖,控制器)

  • 視圖:我們能直觀看到的web界面
  • 模型:按要求從數據庫取出數據
  • 控制器:向系統發出指令的工具和幫手

MVC(3 個層)的 3 個優勢:
(1)各司其職,互不干擾
(2)有利於開發中的分工
(3)有利於代碼的重用
Demo:

  • 第一步:瀏覽者->調用控制器,對他發出指令
  • 第二步:控制器->按指令選取一個合適的模型
  • 第三步:模型->按控制器指令取相應數據
  • 第四步:控制器->按指令選取相應視圖
  • 第五步:視圖->把第三步取到的數據按用戶想要的樣子顯示出來

test.php

<?php 
require_once("testController.class.php");
require_once("testModel.class.php");
require_once("testView.class.php");
$testController = new testController();//控制器實例化
$testController->show();//調用函數
 ?>

testController.class.php
控制器的作用是調用模型,並調用視圖,將模型產生的數據傳遞給視圖,並讓相關視圖去顯示

<?php 
class testController{
	function show(){
		$testModel = new testModel();
		$data = $testModel->get();//取到數據,暫存到$data中
		$testView = new testView();//創建一個視圖實例
		$testView->display($data);
	}
}
 ?>

testModel.class.php
模型的作用是獲取數據並處理、返回數據

<?php 
class testModel{
	function get(){
		return "hello world";
	}
}
 ?>

testView.class.php
視圖的作用是將取得的數據進行組織、美化等,並最終向用戶終端輸出

<?php 
	class testView{
		function display($data){
			echo $data;
		}
	}
 ?>

單一入口機制

單一入口機制:單一入口指在一個web應用程序中,所有的請求都是指向一個腳本文件,例如我們經常看到某一個網站所有的頁面都是index.php?xxx這樣的形式。所有對使用程序的訪問都是必須通過這個入口。
Demo:
index.php

<?php 
//url形式   index.php?controller=控制器名&method=方法名
//http://localhost/mvc/test/index.php?controller=test&method=show
	require_once('function.php');
	$controller = $_GET['controller'];
	$method = $_GET['method'];
	//echo $controller;
	C($controller, $method);//調用控制器函數
 ?>

function.php

<?php 
/*
eval()函數調用簡單但是不安全
eval('$obj = new '.$name.'Model()');
可用下面代碼代替:
$model = $name.'Model';
$obj = new $Model();
	 */
	//控制器調用函數
	function C($name, $method){//兩個參數分別表示控制器名稱和要執行的函數名稱
		require_once($name.'Controller.class.php');
		eval('$obj = new '.$name.'Controller();$obj->'.$method.'();');//eval函數用來將字符串轉化爲可執行的代碼
	}
	//模型調用函數
	function M($name){//參數是模型文件的名稱
		require_once($name.'Model.class.php');
		eval('$obj = new '.$name.'Model();');
		return $obj;
	}
	//視圖調用函數
	function V($name){//參數是視圖文件的名稱
		require_once($name.'View.class.php');
		eval('$obj = new '.$name.'View();');//視圖類實例化
		return $obj;
	}
 ?>

testController.class.php
這裏有了function.php,我們就可以使用模型調用函數來實例化模型

<?php 
class testController{
	function show(){
		$testModel = M("test");
		$data = $testModel->get();//取到數據,暫存到$data中
		$testView = V("test");//創建一個視圖實例
		$testView->display($data);
	}
}
?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章