Home > Article > Backend Development > PHP - MVC pattern explanation and examples
1. MVC pattern flow chart
##2. MVC concept
(1) Function MVC includes Controller, Model, and View. The function of the controller is to call the model and the view, pass the data generated by the model to the view, and let the view display it The function of the model is to obtain the data and process the returned data The function of the view is to beautify the obtained data and output it to the user terminal (2) Execution process1. Viewer-> Call the controller and issue instructions2. Controller-> Select the appropriate model according to the command3. Model-> Get data according to the command4. Controller-> Select the view according to the command 5 . View -> Display the obtained data3. Simple MVC example
(1) Directory planning1. testController.class.php Controller class file
<!-- 首先实例化控制器对象,并调用指令方法, 方法里面实例化模型对象,调用取数据方法 并实例化视图对象,调用展示方法 --> <!-- 控制器的方法没有参数,而其他的就有参数 --> <?php // 类名和文件名相同 class testController{ function show(){ $testModel = new testModel();//按指令选择一个模型 $data = $testModel -> get();//模型按照指令取数据 //按指令选择视图 实例化一个view的对象 $testView = new testView(); //把取到的数据按用户的样子显示出来 $testView -> display($data); } } ?>2. testModel.class.php Model class file
Naming rules: test (model file name) Model ( Model file).class.php Class file
<?php class testModel{ //获取数据 function get(){ return "hello world"; } } ?>3. testView.class.php View class file
<?php class testView{ //展示数据 function display($data){ echo $data; } } ?>4. Single entry file Let him call the controller , and the controller calls the model and view
<?php //引入类文件 require_once('/libs/Controller/testController.class.php'); require_once('/libs/Model/testModel.class.php'); require_once('/libs/View/testView.class.php'); //类的实例化 $testController = new testController();//对象赋值给变量 $testController->show();//调用方法 ?>5. Running results
4. Simple MVC instance improvement----Method Encapsulation
1. Encapsulate an object that instantiates a controller, etc. and a function that calls a method<?php //控制器名字和要执行的方法 function C($name,$method){ require_once('/libs/Controller/'.$name.'Controller.class.php'); //对象赋值给变量 // $testController = new testController(); // $testController->show(); eval('$obj = new '.$name.'Controller();$obj->'.$method.'();');//把字符串转换为可执行的php语句 } //封装一个实例化模型的对象和调用方法的函数 function M($name){ require_once('/libs/Model/'.$name.'Model.class.php'); //$testModel = new testModel(); eval('$obj = new '.$name.'Model();');//实例化 return $obj; } //封装一个实例化视图的对象和调用方法的函数 function V($name){ require_once('/libs/View/'.$name.'View.class.php'); //$testView = new testView(); eval('$obj = new '.$name.'View();'); return $obj; } //为了安全性 ,过滤函数 //addslashes对’,字符进行转义 //get_magic_quotes_gpc()当前魔法符号的打开状态,打开返回true, function daddslashes($str){ return (!get_magic_quotes_gpc() )? addslashes($str) : $str; } ?>2. Rewrite the entry file index.php Browser URL access form http://...index.php?controller=controller name&method=method name
<?php require_once('function.php'); //允许访问的控制器名和方法名的数组 $controllerAllow=array('test','index'); $methodAllow =array('test','index','show'); //用get方式接收url中的参数 //过滤输入非法字符 并判断是否在数组里 $controller = in_array($_GET['controller'],$controllerAllow )? daddslashes($_GET['controller']) :'index' ; $method = in_array($_GET['method'],$methodAllow) ? daddslashes($_GET['method']) :'index'; //调用控制器和执行方法 C($controller,$method); ?>3. Running resultsBrowser access http:// localhost:8080/MVC/index.php?controller=test&method=show Show hello world
The above is the detailed content of PHP - MVC pattern explanation and examples. For more information, please follow other related articles on the PHP Chinese website!