1. MVC パターン フローチャート
2. MVC の概念(1) 機能
MVC には、Controller、Model、View が含まれます。
コントローラーの機能は、モデルとビューを呼び出し、モデルによって生成されたデータをビューに渡し、ビューに表示させることです。
モデルの機能は次のとおりです。データの取得と返されたデータの処理
ビューの機能は取得したデータを整形してユーザ端末に出力することです
# (2) 実行処理##1 . ビューア-> コントローラを呼び出し、指示を出します
2. コントローラ-> コマンドに従って適切なモデルを選択します
##3. モデル-> コマンドに従ってデータを取得します#4. コントローラー -> コマンドに従ってビューを選択 5 . ビュー -> 取得したデータを表示 ##3. 簡単な MVC の例(1) ディレクトリの計画
(2) クラスファイルの作成
#1.testController.class.php コントローラークラスファイル命名規則:test (名前)Controller (コントローラファイル).class.php (クラスファイル)
<!-- 首先实例化控制器对象,并调用指令方法, 方法里面实例化模型对象,调用取数据方法 并实例化视图对象,调用展示方法 --> <!-- 控制器的方法没有参数,而其他的就有参数 --> <?php // 类名和文件名相同 class testController{ function show(){ $testModel = new testModel();//按指令选择一个模型 $data = $testModel -> get();//模型按照指令取数据 //按指令选择视图 实例化一个view的对象 $testView = new testView(); //把取到的数据按用户的样子显示出来 $testView -> display($data); } } ?>
2.testModel.class.php モデルクラスファイル
命名規則: test (モデルファイル名) Model (モデルファイル).class.php クラスファイル
<?php class testModel{ //获取数据 function get(){ return "hello world"; } } ?>
<?php class testView{ //展示数据 function display($data){ echo $data; } } ?>
彼にコントローラーを呼び出させ、コントローラーはモデルとビューを呼び出します
<?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。実行結果
4 . 簡単な MVC インスタンスの改善---メソッドのカプセル化
1. コントローラーなどをインスタンス化するオブジェクトと、メソッドを呼び出す関数をカプセル化します
<?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.エントリファイルindex.php ブラウザURL アクセスフォーム http://...index.php?controller=コントローラ名&method=メソッド名
<?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. 実行結果
ブラウザ アクセス http:// localhost:8080/MVC/index.php?controller=test&method=show Hello World を表示
PHP 関連の問題について詳しく知りたい場合は、 PHP 中国語 Web サイトにアクセスしてください:PHP ビデオ チュートリアル
以上がPHP - MVC パターンの説明と例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。