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);
	}
}
?>
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值