20181018 完整的mvc

目录

以及文件夹里面详细目录

back/controller里面的    AdminController.class.php  代码

<?php
//后台首页控制器
 session_start();
class AdminController  extends  PlatFromController{
   
	function indexAction(){
		require VIEW_PATH."index.html";
	}
	function topAction(){
		require VIEW_PATH."top.html";
	}
	function menuAction(){
		require VIEW_PATH."menu.html";
	}
	function mainAction(){
		require VIEW_PATH."main.html";
	}
	function categoryListAction(){
		require VIEW_PATH."categoryList.html";
	}
	function goodslistAction(){
		//实例化模型类  返回数据
		$goodsModel=Factory::M("GoodsModel");
		//返回数据
		$list=$goodsModel->getList();
		require VIEW_PATH."goodslist.html";
	}
	//添加商品
	function goodsAddAction(){
		require VIEW_PATH."goodsAdd.html";
	}
	//删除商品
	function  delAction(){
		$id=$_GET[id];
		//实例化商品模型
		$goodsModel=Factory::M("GoodsModel");
		//调用删除方法
		$goodsModel->delData($id);
		//显示页面
		$list=$goodsModel->getList();
		require VIEW_PATH."goodslist.html";
		
	}
}

 back/controller里面的 GoodsController.class.php  代码

<?php

//商品控制器
class  GoodsController  extends PlatFromController{
	//添加商品
	function insertAction(){
	//收集表单数据
	$data["goods_name"]=$_POST["goods_name"];
	$data["shop_price"]=$_POST["shop_price"];
	$data["goods_number"]=$_POST["goods_number"];
		
	  //上传商品图片原图
		$t_upload = new Upload();
		$t_upload->upload_path = './web/upload/';
		$t_upload->prefix = 'goods_ori';
		if ($result = $t_upload->uploadOne($_FILES['goods_img'])) {
			//成功
			$data['goods_img'] = $result;
		} else {
			//上传失败
			$this->_jump('index.php?p=back&c=Admin&a=goodsAdd', '上传失败,<br>' . $t_upload->getError());
		}	
		
    
	//获取模型对象
	$goodsModel=Factory::M("GoodsModel");
	//调用模型对象添加方法
		$goodsModel->addData($data);
	//显示页面
		$this->_jump("index.php?p=back&c=Admin&a=goodsAdd","添加成功");
		require VIEW_PATH."goodsAdd.html";
  }
}

 back/controller里面的   LoginController.class.php  代码

<?php
//登录的控制器
class LoginController extends PlatFromController{
	//登录表单动作
	public  function  loginAction(){
		//载入当前的视图层模板
		require VIEW_PATH."login.html";
	}
	//登录验证
	function checkAction(){
		$uid=$_POST["uid"];
		$pwd=$_POST["pwd"];
		$yzm=$_POST["yzm"];
		
		$Captcha=new Captcha();
		if(!$Captcha->checkCaptcha($yzm)){
			$this->_jump("index.php?p=back&c=Login&a=login","验证码错误");
		}
		
		//连接数据库  把账号密码传过去  验证
		$userModel = Factory::M("UserModel");
		
		//根据返回结果  跳转
		if($userModel->check($uid,$pwd)){
			//登录成功
			session_start();
			$_SESSION["login"]="yes";
	       $this->_jump("index.php?p=back&c=Admin&a=index");
		}else{
			//登录失败
			 $this->_jump("index.php?p=back&c=Login&a=login","登录失败");
			
		}
		
	}
	//输出验证码
	function  CaptchaAction(){
		$yzm=new Captcha();
		$yzm->generate();
	}
	//退出  动作
	function quitAction(){
		unset($_SESSION["login"]);
		$this->_jump("index.php?p=back&c=Login&a=login");
	}
	
}

  

 back/controller里面的   PlatFromController.class.php  代码 

<?php
//平台控制器类  集中验证
class PlatFromController extends Controller{
	//构造方法
	function __construct(){
		parent::__construct();
		$this->_checkLogin();
	}
	
	
	//验证登录操作
   function _checkLogin(){
	   session_start();
	   //不需要验证的方法
	   $no_list=array(
		   "Login" =>array("login","check","Captcha")
	   );
	   //判断不需要验证
	   //控制器名=》当前控制器不需要验证的动作名列表组
	   if(isset($no_list[CONTROLLER])&& in_array(ACTION,$no_list[CONTROLLER])){
		   return;
	   }
	   //需要验证的
	   if(!isset($_SESSION["login"])){
		   $this->_jump("index.php?p=back&c=Login&a=login","非法登录-请登录",5);
	   }
   }
}

  back/model里面的    GoodsModel.class.php  代码

<?php

//商品列表模型
class  GoodsModel extends  Model{
	//获取列表
	function getList(){
		$sql="select goods_id,goods_name,shop_price,goods_number  from p34_goods";
		return $this->dao->getAttr($sql);
	}
	//添加数据
	function addData($data){
		$sql="insert  into p34_goods(goods_name,shop_price,goods_number)values('".$data['goods_name']."','".$data['shop_price']."','".$data['$goods_number']."')";
		$this->dao->DbQuery($sql);
	}
	//删除数据
	function delData($id){
		$sql="delete  from  p34_goods where goods_id='$id'";
		$this->dao->DbQuery($sql);
	}
	
}

  

  back/model里面的   UsersModel.class.php  代码

<?php
//用户表的模型类
class UserModel extends Model{
	//登录验证的方法
	function check($uid,$pwd){
		$sql="select  pwd from user where id='$uid'";
		$res=$this->dao->getStr($sql);
		if($pwd != "" && $res != "" && $res ==$pwd){
			return true;
		}else{
			return false;
		}
	}
}

view里面就只弄(index.html   login.html )

index.html   代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>ECSHOP 管理中心</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="Text/Javascript" language="JavaScript">

if (window.top != window) {
    window.top.location.href = document.location.href;
}
</script>

<frameset rows="76,*" framespacing="0" border="0">
    <frame src="index.php?p=back&c=Admin&a=top" id="header-frame" name="header-frame" frameborder="no" scrolling="no">
    <frameset cols="180,*" framespacing="0" border="0" id="frame-body">
        <frame src="index.php?p=back&c=Admin&a=menu" id="menu-frame" name="menu-frame" frameborder="no">
        <frame src="index.php?p=back&c=Admin&a=main" id="main-frame" name="main-frame" frameborder="no">
    </frameset>
</frameset><noframes></noframes>
</head>
<body>
</body>
</html>

  

login.html   代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>ECSHOP 管理中心</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="web/Styles/general.css" rel="stylesheet" type="text/css" />
<link href="web/Styles/main.css" rel="stylesheet" type="text/css" />
</head>
<body style="background: #278296;color:white">
<form method="post" action="index.php?p=back&c=Login&a=check">
    <table cellspacing="0" cellpadding="0" style="margin-top:100px" align="center">
        <tr>
            <td>
                <img src="web/Images/login.png" width="178" height="256" border="0" alt="ECSHOP" />
            </td>
            <td style="padding-left: 50px">
                <table>
                    <tr>
                        <td>管理员姓名:</td>
                        <td>
                            <input type="text" name="uid" />
                        </td>
                    </tr>
                    <tr>
                        <td>管理员密码:</td>
                        <td>
                            <input type="password" name="pwd" />
                        </td>
                    </tr>
                    <tr>
                        <td>验证码:</td>
                        <td>
                            <input type="text" name="yzm" class="capital" />
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2" align="right">
                            <img src="index.php?p=back&c=Login&a=Captcha" onClick="this.src='index.php?p=back&c=Login&a=Captcha&'+Math.random()">
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2" align="center">
                            <input type="checkbox" value="1" name="remember" id="remember" />
                            <label for="remember">请保存我这次的登录信息。</label>
                        </td>
                    </tr>
                    <tr>
                        <td> </td>
                        <td>
                            <input type="submit" value="进入管理中心" class="button" />
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
  <input type="hidden" name="act" value="signin" />
</form>
</body>

  config里面的  application.config.php  代码  

<?php
return array(
	//数据库配置
	 "db" =>array(
	    "host"=>"localhost",
    	"name"=>"root",
    	"pwd"=>"",
    	"DbName"=>"z_075mvc",
	    "charset"=>"utf8",
	    "post" =>3306
	  ),
	//默认平台
	"app" =>array(
	   "plat"=>"back",

),
	//后台默认控制器和方法
	"back" =>array(
       "controller"=>"Login",
	   "action"=>"login"
),
	//前台默认控制器和方法
	"front" =>array(
       "controller"=>"Login",
	   "action"=>"login"
),

	//后台默认控制器和方法
	"test" =>array(
	   "controller"=>"Match",
	   "action"=>"list"
)
	
);

  

test/controller里面的  MatchController.class.php  代码

<?php


//队伍控制器
class MatchController extends Controller{
	//显示比赛列表
	function listAction(){
		

    $MatchModel=Factory::M("MatchModel");
    $match_list=$MatchModel->getlist();


    require VIEW_PATH."match_list_v.html";
	}
	//修改比赛列表
	function updateAction(){
		
		echo "这是修改比赛的方法";
	}

}

  

test/controller里面的  TeamController.class.php  代码

<?php


//队伍控制器
class TeamController extends Controller{
		//显示队伍列表
	function  listAction(){
		
		$TeamModel=Factory::M("TeamModel");
        $team_list=$TeamModel->getlist();
        
		require VIEW_PATH."myview.html";
	}
	//删除队伍
	function removeTeamAction(){
		
		$id=$_GET["id"];
		$TeamModel=Factory::M("TeamModel");
        $team_list=$TeamModel->del($id);
		$team_list=$TeamModel->getlist();
		
      require VIEW_PATH."myview.html";
	}
}

  

test/modelr里面的  MatchModel.class.php  代码

<?php

class MatchModel extends Model{
 function getlist(){
	 
    //获得比赛列表数据
      $sql = "select t1.t_name as t1_name, m.t1_score, m.t2_score, t2.t_name as t2_name, m.m_time from `match` as m left join `team` as t1 ON m.t1_id = t1.t_id  left join `team` as t2 ON m.t2_id=t2.t_id";

      return  $this->dao->getAssoc($sql);
		
	}
} 

test/modelr里面的  TeamModel.class.php  代码

<?php


class TeamModel extends Model{
	function getlist(){
		$sql="select *from team";
		return $this->dao->getAssoc($sql);
	}
	function del($id){
		$sql="delete  from team where t_id=$id";
		$this->dao->DbQuery($sql);
	}
}

  

view里面的  match-list_v.html  代码

<!-- 利用HTML代码展示数据 -->
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>比赛列表</title>
</head>
<body>

<table>
<tr>
<th>球队一</th>
<th>比分</th>
<th>球队二</th>
<th>时间</th>

</tr>
<?php foreach($match_list as $row) : ?>
	<tr>
	<td><?php echo $row['t1_name'];?></td>
	<td><?php echo $row['t1_score'];?>:<?php echo $row['t2_score'];?></td>
	<td><?php echo $row['t2_name'];?></td>
	<td><?php echo date('Y-m-d H:i', $row['m_time']);?></td>
	</tr>
<?php endForeach;?>
</table>	
</body>
</html>

  

view里面的  myview.html  代码

<!-- 利用HTML代码展示数据 -->
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>比赛列表</title>
</head>
<body>

<table>
<tr>
<th>t_id</th>
<th>t_name</th>
<th>操作</th>
</tr>
<?php foreach($team_list as $row) : ?>
	<tr>
	<td><?php echo $row['t_id'];?></td>
	<td><?php echo $row['t_name'];?></td>
	<td>
		<a href="index.php?p=test&c=Team&a=removeTeam&id=<?php echo $row['t_id'];?>">删除</a>
	</td>
	</tr>
<?php endForeach;?>
</table>	
</body>
</html>

  

framework/tool里面的  Captcha.class.php  代码

<?php


/**
 * 验证码 工具
 */
class Captcha {

	/**
	 * 输出生成的验证码输出
	 *
	 * @param $code_len=4 码值的长度
	 * @return void
	 */
	public function generate($code_len=4) {
		//生成码值
		$chars = 'ABCDEFGHIJKLMNPQRSTUVWXYZ123456789';//所有可能字符
		$chars_len = strlen($chars);
		$code = '';//初始化码值字符串
		for($i=1; $i<=$code_len;++$i) {
			$rand_index = mt_rand(0, $chars_len-1);
			$code .= $chars[$rand_index];//字符串支持[]操作,通过下标取得某个字符
		}
		//echo $code;

		//存储于session,用于验证
		@session_start();//保证session机制一定是开启的,同时重复开启不会报错,@屏蔽错误。
		$_SESSION['captcha_code'] = $code;

		//生成验证码图片

		//背景图
		$bg_file = TOOL_PATH . 'captcha/captcha_bg' . mt_rand(1, 5) . '.jpg';

		//基于jpg格式的图片创建画布
		$img = imageCreateFromJPEG($bg_file);

		//随机分配字符串颜色
		$str_color = mt_rand(1, 3) == 1 ? imageColorAllocate($img, 0, 0, 0) : imageColorAllocate($img, 0xff, 0xff, 0xff);

		//字符串
		$font = 5;
		// 画布尺寸
		$img_w = imageSX($img);
		$img_h = imageSY($img);
		// 字体的尺寸
		$font_w = imageFontWidth($font);
		$font_h = imageFontHeight($font);
		// 字符串的尺寸
		$code_w = $font_w * $code_len;
		$code_h = $font_h;
		$x = ($img_w-$code_w)/2;
		$y = ($img_h-$code_h)/2;
		imageString($img, $font, $x, $y, $code, $str_color);

		//输出
		header('Content-Type: image/jpeg;');
		imageJPEG($img);

		//
		imageDestroy($img);
	}

	/**
	 * 验证
	 * @param $request_code 用户表单中提交的码值
	 * @return bool 是否匹配
	 */
	public function checkCaptcha($request_code) {
		@session_start();
		//严格点,存在且相等(不区分大小写)。
		//strCaseCmp()不区分大小写字符串比较,返回值负,第一个小,返回正,第一个大,返回0,相等。strCmp也是类似,不过是区分大小写比较。
		$result = isset($request_code) && isset($_SESSION['captcha_code']) && (strCaseCmp($request_code, $_SESSION['captcha_code'])==0);

		//安全考虑,销毁session中的验证码值
		unset($_SESSION['captcha_code']);

		return $result;

	}
}

  

framework/tool里面的  Upload.class.php  代码

<?php


class Upload {
	private $_max_size;
	private $_type_map;
	private $_allow_ext_list;
	private $_allow_mime_list;
	private $_upload_path;
	private $_prefix;

	private $_error;//当前的错误信息
	public function getError() {
		return $this->_error;
	}

	public function __construct() {
		$this->_max_size = 1024*1024;
		$this->_type_map = array(
			'.png' 	=> array('image/png', 'image/x-png'),
			'.jpg'	=> array('image/jpeg', 'image/pjpeg'),
			'.jpeg'	=> array('image/jpeg', 'image/pjpeg'),
			'.gif'	=> array('image/gif'),
			);
		$this->_allow_ext_list = array('.png', '.jpg');
		$allow_mime_list = array();
		foreach($this->_allow_ext_list as $value) {
			//得到每个后缀名
			$allow_mime_list = array_merge($allow_mime_list, $this->_type_map[$value]);
		}
		// 去重
		$this->_allow_mime_list = array_unique($allow_mime_list);
		$this->_upload_path = './';
		$this->_prefix = '';
	}

	public function __set($p, $v) {//属性重载
		$allow_set_list = array('_upload_path', '_prefix', '_allow_ext_list', '_max_size');
		//可以不加:_ 进行设置
		if(substr($p, 0, 1) !== '_') {
			$p = '_' . $p;
		}

		$this->$p = $v;
	}


	/**
	 * 上传单个文件
	 */
	public function uploadOne($tmp_file) {

		# 是否存在错误
		if($tmp_file['error'] != 0) {
			$this->_error = '文件上传错误';
			return false;
		}

		# 尺寸
		if ($tmp_file['size'] > $this->_max_size) {
			$this->_error = '文件过大';
			return false;
		}

		# 类型
		# 保证修改允许的后缀名,就可以影响到$allow_ext_list和$allow_mime_list
		# 设置一个后缀名与mime的映射关系
		
		# 后缀,从原始文件名中提取
		$ext = strtolower(strrchr($tmp_file['name'], '.'));
		if (!in_array($ext, $this->_allow_ext_list)) {
			$this->_error = '类型不合法';
			return false;
		}
		# MIME, type元素。
		// $allow_mime_list = array('image/png', 'image/gif', 'image/jpeg', 'image/pjpeg', 'image/x-png');
		
		if (!in_array($tmp_file['type'], $this->_allow_mime_list)) {
			$this->_error = '类型不合法';
			return false;
		}
		//PHP自己获取文件的mime,进行检测
		$finfo = new Finfo(FILEINFO_MIME_TYPE);//获得一个可以检测文件MIME类型信息的对象
		$mime_type = $finfo->file($tmp_file['tmp_name']);//检测
		if (!in_array($mime_type, $this->_allow_mime_list)) {
			$this->_error = '类型不合法';
			return false;
		}


		# 移动
		# 上传文件存储地址
		//创建子目录
		$subdir = date('YmdH') . '/';
		if(!is_dir($this->_upload_path . $subdir)) {//检测是否存在
			//不存在
			mkdir($this->_upload_path . $subdir);
		}
		# 科学起名
		$upload_filename = uniqID($this->_prefix, true) . $ext;
		if (move_uploaded_file($tmp_file['tmp_name'], $this->_upload_path . $subdir . $upload_filename)) {
			// 移动成功,返回文件名
			return $subdir . $upload_filename;
		} else {
			// 移动失败
			$this->_error = '移动失败';
			return false;
		}

	}
}

  

frameworkl里面的  Controller.class.php  代码

<?php
//基础控制器
class Controller{
	function __construct(){
		$this->_initHead();
	}
	//设置字符集
	function _initHead(){
		header('Content-Type: text/html; charset=utf-8');
	}
	//跳转
//@param   $url  路径
//@param   $info 提示信息
//@param   $wait  等待时间
//return  void
	function  _jump($url,$info=null,$wait=3){
		if(is_null($info)){
			//立即
			header("location:".$url);
		}else{
			//提示后
			header("Refresh:$wait;URL=$url");
			echo $info;
		}
		//终止
		die;
	}
}

  

frameworkl里面的  Factory.class.php  代码

<?php
//单例工厂类
class Factory{
	//返回指定类的对象
	public  static  function M($model_name){
		//定义一个数组  用来各种对象
		static $model_list=array();
		
		//判断数组中有没有指定的对象
		if(!isset($model_list[$model_name])){
		   
			$model_list[$model_name]=new $model_name;
		}
		//返回对象
		return $model_list[$model_name];
	}
}

  

frameworkl里面的   Framework.class.php  代码   (很重要   框架类)

<?php
//框架初始化功能类
class Framework{
	//入口
 public  static  function  run(){
		
		//声明路径常量
		static::_initPath();
	    //获取配置信息
	    static::_initConfig();
		//确定分发参数
		static::_initParam();
		//当前平台相关的路径常量
		static::_initPlatPath();
		//注册自动加载
		static::_initAutoload();
		//请求分发
		static::_dispatch();
	}
	//声明路径常量
	static function _initPath(){
		
        //目录常量
        define("ROOT_PATH",getcwd()."/");
        
        define("APP_PATH",ROOT_PATH."application/");
        
        define("FRAME_PATH",ROOT_PATH."framework/");
		
        define("CONFIG_PATH",APP_PATH."config/");
		
        define("TOOL_PATH",FRAME_PATH."tool/");
	}
	//获取配置信息
	static function _initConfig(){
		$GLOBALS["config"]=require CONFIG_PATH."application.config.php";
   
	}
	//确定分发参数
	static function _initParam(){
    
        //参数分发  平台
       
        //定义平台常量
        define("PLATFORM",isset($_GET["p"])?$_GET["p"]:$GLOBALS["config"]["app"]["plat"]);
        //参数分发   控制器
     
        //定义控制器常量
        define("CONTROLLER",isset($_GET["c"])?$_GET["c"]:$GLOBALS["config"][PLATFORM]["controller"] );
        //参数分发   动作
      
        //定义动作常量
        define("ACTION",isset($_GET["a"])?$_GET["a"]:$GLOBALS["config"][PLATFORM]["action"] );
	}
	//当前平台相关的路径常量
	static function _initPlatPath(){
		
      
        //当前平台相关常量
        define("CONTROLLER_PATH",APP_PATH.PLATFORM."/controller/");
        
        define("MODEL_PATH",APP_PATH.PLATFORM."/model/");
        
        define("VIEW_PATH",APP_PATH.PLATFORM."/view/");

	}
	//注册自动加载
	static function _initAutoload(){
	
      //注册自动加载方法
      spl_autoload_register(array(__CLASS__,"userAutoload"));
	}
	
    //自动加载的方法  自动载入已知类文件
     static function  userAutoload($class_name){
    	
    	//先确定确定的(核心类)
    	//类名与类文件映射数组
    	$framework_class_list=array(
    	//类名=>类文件地址
    		"Controller" =>  FRAME_PATH."Controller.class.php",
    		"Model"      =>  FRAME_PATH."Model.class.php",
    		"Factory"    =>  FRAME_PATH."Factory.class.php",
    		"mysqlDb"    =>  FRAME_PATH."mysqlDb.class.php",
    		"Captcha"    =>  TOOL_PATH."Captcha.class.php",
    		"Upload"    =>  TOOL_PATH."Upload.class.php"
    	
    	);
    	//加载类
    	if(isset($framework_class_list[$class_name])){
    		//是核心类
    		require $framework_class_list[$class_name];
    	}else if(substr($class_name,-10)=="Controller"){
    		require CONTROLLER_PATH.$class_name.".class.php";
        }else if(substr($class_name,-5)=="Model"){
    		require MODEL_PATH.$class_name.".class.php";
    	}
    }
   //请求分发
	static function _dispatch(){
         $controllerName=CONTROLLER."Controller";//组织控制器名
		
         $Action=ACTION."Action";//组织方法名
		
         $controller=new $controllerName();
         $controller->$Action();
	}
	
	
}

  

frameworkl里面的  Model.class.php  代码

<?php
//基础模型类
class Model{
	public $dao;//代表mysqlDb类对象
	//实例化模型对象时自动创建  mysqlDb对象
	function __construct(){
	 $this->_initDao();
	}
	//初始化数据库操作类的对象
function _initDao(){
	
       $config=$GLOBALS["config"]["db"];
       $this->dao= mysqlDb::getInstance($config);
   }

}

	

  

frameworkl里面的  mysqDb.class.php  代码(用类封装一个连接数据库的方法)

<?php
class mysqlDb{
	public $host; //服务器地址
	public $post=3306; //端口
	public $name; //用户名
	public $pwd; //m密码
	public $DbName; //数据库名称
	public $charset;//默认编码
	
	public $link;//数据库连接对象
	public $res; //资源   返回结果集
	
	//三私一公
	private static $obj;//用来存newdb对象
	//构造方法 私有的
	private function __construct($config=array()){
		/*初始化参数*/
		$this->host = $config["host"] ? $config["host"] : "localhost";
		$this->name = $config["name"] ? $config["name"] : "root";	
		$this->pwd = $config["pwd"] ? $config["pwd"]  : "";
		$this->DbName = $config["DbName"] ?  $config["DbName"] : "mysql";
		$this->charset = $config["charset"] ?$config["charset"] : "utf8" ;
		
		/*连接数据库  设置字符集*/
		$this->connectMysql();
		$this->setCharSet();
	}
	//私有化clone方法
	private  function __clone(){}
	//提供公共的返回对象方法
	static function getInstance($config=array()){
		if(!isset(self::$obj)){
			self::$obj=new self($config);
		}
		return self::$obj;
	}
	
	
	/*连接数据库*/
	function connectMysql(){
		$this->link = new MySQLi($this->host,$this->name,$this->pwd,$this->DbName);
		!mysqli_connect_error() or die("连接数据库失败");
	}
	
	/*设置字符集*/
	function setCharSet(){
		$this->link->query("set names ".$this->charset );
	}
	
	/*执行sql语句的方法*/
	function DbQuery($sql){
		$this->res = $this->link->query($sql);
		if(!$this->res){
			echo ("<br />执行失败。");
			echo "<br />失败的sql语句为:" . $sql;
			echo "<br />出错信息为:" . mysqli_error($this->link);
			echo "<br />错误代号为:" . mysqli_errno($this->link);
			die;
		}
		return $this->res;
	}
   //返回字符串
	function getStr($sql){
		$zhi = $this->DbQuery($sql);
		//将结果集转为字符串
		$arr = $zhi->fetch_all();
		$brr = array();
		foreach($arr as $v){
			$brr[] = implode(",",$v);
		}
		return implode("^",$brr);
	}

	//返回json
	function getJson($sql){
		$zhi = $this->DbQuery($sql);
		$brr = array();
		while($row = $zhi->fetch_assoc()){
			$brr[] = $row;
		}
		return json_encode($brr);
	}
	/*返回关联数组*/
	function getAssoc($sql){
		$zhi = $this->DbQuery($sql);
		$brr = array();
		while($row = $zhi->fetch_assoc()){
			$brr[] = $row;
		}
		return $brr;
	}
	//返回索引数组
	function getAttr($sql){
		$zhi = $this->DbQuery($sql);
		return $zhi->fetch_all();
	}

}

  

web里面的照片  js  styles   upload(文件上传照片储存文件夹)

index.php  (非常重要的   入口文件)

<?php

require "./framework/Framework.class.php";

Framework::run();

 

更加详细的代码   在D:wampserverwampwww20181012   wanzheng MVC 

   

原文地址:https://www.cnblogs.com/sp1234/p/9808589.html