MVC-自动加载imooc

                                  MVC-自动加载imooc

 

在自动加载类中定义一个命名空间和一个方法类

namespace roce;

class imooc

{
    public static $classMap = array();//定义的变量名
    public $assign;

}

 

而后再在类中主要考虑3个方面,把它分成了3个方法

1)加载控制器run方法:

 

       //加载控制器
	static public function run()
	{
		//new路由
		$route = new \roce\lib\route();
  
                //$ctrlClass控制器
		$ctrlClass = $route->ctrl;
		
                //$action方法
		$action = $route->action;

		$ctrlFile = APP.'/ctrl/'.$ctrlClass.'Ctrl.php';

		$ctrlClass = '\\'.MODULE.'\ctrl\\'.$ctrlClass.'Ctrl';
 
		//判断控制器文件是否存在
		if (is_file($ctrlFile))
		{
			include $ctrlFile;
			$obj = new $ctrlClass();
			$obj->index();
		}
		else
		{
			// echo $ctrlClass;
			throw new \Exception('找不到控制器'.$ctrlClass);
		}
	}

 

2)自动加载lode方法

 

//自动加载类
static public function load($class)
{

  // //自动加载类库
  $class = str_replace('\\','/',$class);
  $file = IMOOC.'/'.$class.'.php';
  //防止重复加载
  if (isset($classMap[$class]))
  {
   return true;
  }
  else
  {
   //判断是否存在文件类
   if (is_file($file))
   {
    include $file;
    self::$classMap[$class] = $class;
   }
   else
   {
    return false;
   }
  }
}

 

 

//自动加载类
static public function load($class)
{

  // //自动加载类库
  $class = str_replace('\\','/',$class);
  $file = IMOOC.'/'.$class.'.php';
  //防止重复加载
  if (isset($classMap[$class]))
  {
   return true;
  }
  else
  {
   //判断是否存在文件类
   if (is_file($file))
   {
    include $file;
    self::$classMap[$class] = $class;
   }
   else
   {
    return false;
   }
  }
}


3)视图层所用的传值方法

 

 

 

 

	//视图调用
	public function assign($name,$value)
	{
		$this->assign[$name] = $value;
	}
        //转换传值参数
	public function display($file)
	{
		$file = APP.'/views/'.$file;
		if (is_file($file)) 
		{	
			extract($this->assign);
			include $file;
		}
	}


代码整合

 

 

 

 

 

<?php 
namespace roce;
class imooc
{
	public static $classMap = array();
	public $assign;

	//加载控制器
	static public function run()
	{
		//new路由
		$route = new \roce\lib\route();
		//$ctrlClass控制器
		$ctrlClass = $route->ctrl;
		//$action方法
		$action = $route->action;

		$ctrlFile = APP.'/ctrl/'.$ctrlClass.'Ctrl.php';

		$ctrlClass = '\\'.MODULE.'\ctrl\\'.$ctrlClass.'Ctrl';
 
		//判断控制器文件是否存在
		if (is_file($ctrlFile))
		{
			include $ctrlFile;
			$obj = new $ctrlClass();
			$obj->index();
		}
		else
		{
			// echo $ctrlClass;
			throw new \Exception('找不到控制器'.$ctrlClass);
		}
	}
	
	//自动加载类
	static public function load($class)
	{

		// //自动加载类库 
		$class = str_replace('\\','/',$class);
		$file = IMOOC.'/'.$class.'.php';
		//防止重复加载
		if (isset($classMap[$class])) 
		{
			return true;
		}
		else
		{
			//判断是否存在文件类
			if (is_file($file))
			{
				include $file;
				self::$classMap[$class] = $class;
			}
			else
			{
				return false;
			}
		}
	}

	//视图调用
	public function assign($name,$value)
	{
		$this->assign[$name] = $value;
	}
	
	public function display($file)
	{
		$file = APP.'/views/'.$file;
		if (is_file($file)) 
		{	
			extract($this->assign);
			include $file;
		}

	}


}


?>

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值