ホームページ > バックエンド開発 > PHPチュートリアル > PHP - MVC パターンの説明と例

PHP - MVC パターンの説明と例

王林
リリース: 2023-04-07 10:08:01
転載
10028 人が閲覧しました

1. MVC パターン フローチャート

PHP - MVC パターンの説明と例

2. MVC の概念(1) 機能

MVC には、Controller、Model、View が含まれます。

コントローラーの機能は、モデルとビューを呼び出し、モデルによって生成されたデータをビューに渡し、ビューに表示させることです。

モデルの機能は次のとおりです。データの取得と返されたデータの処理

ビューの機能は取得したデータを整形してユーザ端末に出力することです

# (2) 実行処理

##1 . ビューア-> コントローラを呼び出し、指示を出します

2. コントローラ-> コマンドに従って適切なモデルを選択します

##3. モデル-> コマンドに従ってデータを取得します

#4. コントローラー -> コマンドに従ってビューを選択

5 . ビュー -> 取得したデータを表示

##3. 簡単な MVC の例

(1) ディレクトリの計画

(2) クラスファイルの作成

#1.testController.class.php コントローラークラスファイルPHP - MVC パターンの説明と例命名規則: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";
        }
    }
?>
ログイン後にコピー

3. testView.class.php ビュークラスファイル

<?php 
    class testView{
        //展示数据
        function display($data){
            echo $data;
        }
    }
?>
ログイン後にコピー

4. 単一エントリファイル


彼にコントローラーを呼び出させ、コントローラーはモデルとビューを呼び出します

<?php
//引入类文件
require_once(&#39;/libs/Controller/testController.class.php&#39;);
require_once(&#39;/libs/Model/testModel.class.php&#39;);
require_once(&#39;/libs/View/testView.class.php&#39;);
 
//类的实例化
$testController = new testController();//对象赋值给变量
$testController->show();//调用方法
?>
ログイン後にコピー

5。実行結果

4 . 簡単な MVC インスタンスの改善---メソッドのカプセル化

PHP - MVC パターンの説明と例 1. コントローラーなどをインスタンス化するオブジェクトと、メソッドを呼び出す関数をカプセル化します

<?php
 
    //控制器名字和要执行的方法
    function C($name,$method){
        require_once(&#39;/libs/Controller/&#39;.$name.&#39;Controller.class.php&#39;);
        //对象赋值给变量
        // $testController = new testController();
        // $testController->show();
        eval(&#39;$obj = new &#39;.$name.&#39;Controller();$obj->&#39;.$method.&#39;();&#39;);//把字符串转换为可执行的php语句
    }
    //封装一个实例化模型的对象和调用方法的函数
    function M($name){
        require_once(&#39;/libs/Model/&#39;.$name.&#39;Model.class.php&#39;);
        //$testModel = new testModel();
        eval(&#39;$obj = new &#39;.$name.&#39;Model();&#39;);//实例化
        return $obj;
    }
 
    //封装一个实例化视图的对象和调用方法的函数
    function V($name){
        require_once(&#39;/libs/View/&#39;.$name.&#39;View.class.php&#39;);
            //$testView  = new testView();
            eval(&#39;$obj = new &#39;.$name.&#39;View();&#39;);
            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(&#39;function.php&#39;);
 
//允许访问的控制器名和方法名的数组
$controllerAllow=array(&#39;test&#39;,&#39;index&#39;);
$methodAllow =array(&#39;test&#39;,&#39;index&#39;,&#39;show&#39;);
//用get方式接收url中的参数
//过滤输入非法字符  并判断是否在数组里
$controller = in_array($_GET[&#39;controller&#39;],$controllerAllow )? daddslashes($_GET[&#39;controller&#39;]) :&#39;index&#39; ;
$method = in_array($_GET[&#39;method&#39;],$methodAllow) ? daddslashes($_GET[&#39;method&#39;]) :&#39;index&#39;;
//调用控制器和执行方法
C($controller,$method);
 
?>
ログイン後にコピー

3. 実行結果

ブラウザ アクセス http:// localhost:8080/MVC/index.php?controller=test&method=show Hello World を表示

PHP 関連の問題について詳しく知りたい場合は、 PHP 中国語 Web サイトにアクセスしてください:

PHP ビデオ チュートリアル

以上がPHP - MVC パターンの説明と例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
mvc
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート