Maison > Article > développement back-end > PHP - Explication du modèle MVC et exemples
1. Organigramme du modèle MVC
2. 🎜> (1) Fonction
MVC comprend le contrôleur, le modèle et la vue. Le rôle du contrôleur est d'appeler le modèle et la vue, de transmettre les données générées par le modèle à la vue et de laisser la vue les afficher Le rôle du modèle est de obtenir les données et traiter les données renvoyées La fonction de la vue est d'embellir les données obtenues et de les envoyer au terminal utilisateur (2) Processus d'exécution 1 . Viewer-> Appelez le contrôleur et émettez des instructions2. Contrôleur-> Sélectionnez le modèle approprié selon la commande3. 🎜>4. Contrôleur-> Sélectionnez la vue selon la commande
5. Vue -> Afficher les données obtenues
3. > (1) Planification du répertoire
(2) Écriture de fichiers de classe 1. fichier de classe
règles de dénomination : test (nom) Controller (fichier du contrôleur).class.php (fichier de classe)<!-- 首先实例化控制器对象,并调用指令方法, 方法里面实例化模型对象,调用取数据方法 并实例化视图对象,调用展示方法 --> <!-- 控制器的方法没有参数,而其他的就有参数 --> <?php // 类名和文件名相同 class testController{ function show(){ $testModel = new testModel();//按指令选择一个模型 $data = $testModel -> get();//模型按照指令取数据 //按指令选择视图 实例化一个view的对象 $testView = new testView(); //把取到的数据按用户的样子显示出来 $testView -> display($data); } } ?>
<?php class testModel{ //获取数据 function get(){ return "hello world"; } } ?>
3 testView.class.php Afficher le fichier de classe
<?php class testView{ //展示数据 function display($data){ echo $data; } } ?>
4.
<?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 Résultats d'exécution 4. .Amélioration simple de l'instance MVC----Encapsulation de méthode 1. Encapsulez un objet qui instancie un contrôleur, etc. et une fonction qui appelle des méthodes
<?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. fichier index.php Formulaire d'accès à l'URL du navigateur 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); ?>Exécution des résultatsNavigateur accédez à http://localhost:8080/MVC/index.php?controller=test&method=show Afficher hello world
Pour plus de problèmes liés à PHP, veuillez visiter le site Web PHP en chinois :
Tutoriel vidéo PHPCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!