| 
       本文章来讲述一下关于mvc中controller类教程,通过上两节我们知道 程序通过单一入口文件的route类决定了 唯一的moudle, conttoller, action,并在最后执行了 
实例代码如下: 
	
	- $route->run(); 
 
	-  
 
	-  
 
	-  
 
	-  
 
	-        private function run () 
 
	-        { 
 
	-            $filePath = APPLICATION_PATH.'/controller/'.$this->_moudle.'/'.$this->_conttoller.'.inc.php'; 
 
	-            $isNo = 0; 
 
	-            if(file_exists($filePath)) 
 
	-            { 
 
	-                   include "$filePath"; 
 
	-                   $controller_tp = $this->_conttoller.'Controller'; 
 
	-                   $controller = new $controller_tp; 
 
	-                  
 
	-               if (method_exists($controller,$this->_action.'Action')) 
 
	-                   { 
 
	-                      $acion_tmp = $this->_action.'Action'; 
 
	-                      $controller->$acion_tmp(); 
 
	-                   }else 
 
	-                   { 
 
	-                      $isNo = 1; 
 
	-                   } 
 
	-  
 
	-            }else 
 
	-            { 
 
	-               $isNo = 1; 
 
	-            } 
 
	-           
 
	-            if ($isNo) 
 
	-            { 
 
	-               $filePath = APPLICATION_PATH.'/controller/default/index.inc.php'; 
 
	-               $this->_moudle = $this->_default['module']; 
 
	-               $this->_conttoller = $this->_default['conttoller']; 
 
	-               $this->_action = $this->_default['action'];            
 
	-              
 
	-               ($this->_moudle != $this->_default['module']) && include "$filePath"; 
 
	-               $controller = new indexController; 
 
	-               $controller->indexAction(); 
 
	-            } 
 
	-        } 
 
	 
 
当相关'Controller'文件存在时执行 
实例代码如下: 
	
	- include "$filePath"; 
 
	- $controller_tp = $this->_conttoller.'Controller'; 
 
	- $controller = new $controller_tp; 
 
	 
 
上述三行代码的意思是,根据确定好的 conttoller 包含相应文件,并实例化相应的conttoller. 
实例代码如下: 
	
	- $acion_tmp = $this->_action.'Action'; 
 
	-     $controller->$acion_tmp(); 
 
	 
 
根据相应的Action 执行相应的action 
所有的 Controller 类都集成一个公用的Controller 类,本节课我们就来分析一下公共的Controller 类 
	
	- <?php 
 
	-  
 
	-  
 
	-  
 
	-  
 
	-  
 
	-  
 
	-  
 
	-  
 
	- defined("WEB_AUTH") || die("NO_AUTH"); 
 
	-  
 
	-  
 
	-  
 
	-  
 
	- ?> 
 
	 
 
实例代码如下: 
	
	- class Controller 
 
	- { 
 
	-     public $tpl; 
 
	-     public $controller; 
 
	-     public $body; 
 
	-     public $_route ; 
 
	-     public $html_; 
 
	-     public $tpl_; 
 
	-    
 
	-      
 
	-  
 
	-  
 
	-     public function __construct() 
 
	-     { 
 
	-            $this->init(); 
 
	-     } 
 
	-  
 
	-      
 
	-  
 
	-  
 
	-     protected function init() 
 
	-     {  
 
	-         global $TPL,$route; 
 
	-         $this->tpl  = $TPL; 
 
	-         $this->_route = $route; 
 
	-     }  
 
	-    
 
	-    
 
	-      
 
	-  
 
	-  
 
	-     protected function diplayTpl() 
 
	-     { 
 
	-        $this->body   || $this->body = $this->_route->getActionName(); 
 
	-        $this->tpl->assign("body",$this->body);      
 
	-         
 
	-        $this->controller ||$this->controller  =$this->_route->getControllerName(); 
 
	-         $this->tpl->assign("controller",$this->controller); 
 
	-        $this->tpl->display($this->layout);   
 
	-     } 
 
	-      
 
	-  
 
	-  
 
	-  
 
	-  
 
	-     public  function assign($name,$value) 
 
	-     { 
 
	-        $this->tpl->assign($name,$value); 
 
	-     } 
 
	-    
 
	-      
 
	-  
 
	-  
 
	-  
 
	-  
 
	-     protected function displayOther($file) 
 
	-     { 
 
	-        $this->assign("otherTpl",TRUE); 
 
	-        $this->tpl->display($file); 
 
	-     }  
 
	-      
 
	-  
 
	-  
 
	-  
 
	-     protected function getMcaBody($array) 
 
	-     { 
 
	-        return   'http://www.cnblogs.com/../'.$array[0].'/body/'.$array[1].'/'.$array[2]; 
 
	-     } 
 
	-      
 
	-  
 
	-  
 
	-     protected function __destruct() 
 
	-     {  
 
	-        $this->tpl->_tpl_vars['otherTpl'] || $this->diplayTpl(); 
 
	-     } 
 
	-      
 
	-  
 
	-  
 
	-     protected function _exit($msg = "") 
 
	-     { 
 
	-        $this->assign("otherTpl",TRUE); 
 
	-        die($msg); 
 
	-     } 
 
	-    
 
	-      
 
	-  
 
	-  
 
	-  
 
	-     protected function __set($name,$value) 
 
	-     { 
 
	-        if(strtolower(substr($name,0,5)) == "html_" || strtolower(substr($name,0,4)) == "tpl_") 
 
	-        { 
 
	-            $this->assign(substr($name,5),$value); 
 
	-        } 
 
	-     } 
 
	- } 
 
	- ?> 
 
	 
 
实例代码如下: 
	
	- protected function __destruct() 
 
	-     {  
 
	-        $this->tpl->_tpl_vars['otherTpl'] || $this->diplayTpl(); 
 
	-     } 
 
	 
 
这是所有Controller 类 生命周期结束时候要执行的函数(搜索一下php魔术方法 查看详情) 
本框架利用这时候解析模板,这样的好处是,当Controller中相关执行完相关数据处理,后自动执行相关的模板(View);而不用每次在程序最后调用模板 
实例代码如下: 
	
	- protected function __set($name,$value) 
 
	-     { 
 
	-        if(strtolower(substr($name,0,5)) == "html_" || strtolower(substr($name,0,4)) == "tpl_") 
 
	-        { 
 
	-            $this->assign(substr($name,5),$value); 
 
	-        } 
 
	-     } 
 
	 
 
这个函数简化了程序向模板传递变量的方法,以smarty为例,在程序中需要执行 $tpl->assign(‘key’,$value); 
来向模板中注册变量,而此函数中简化了此方法 ,只需 $this->html_key=$value;来实现相同的作用.(利用开发环境的提示功能,在前面声明 
实例代码如下: 
	
	- public $html_; 
 
	-     public $tpl_; 
 
	 
 
      
      (责任编辑:admin) |