MVCを使用する場合


11

PHPとMySQLバックエンドでサイトを構築しています。しかし、私は現在、どのタイプのフレームワークも使用していません。Model View Controllerを使用する必要がありますか?


3
MVCデザインパターンを使用するためにフレームワークを使用する必要は必ずしもありません。MVCを使用する独自のコードを構築できます。
エイミーアヌシェフスキ

5
フレームワークを使用する必要があるのか​​、それとも一般的なMVCアプローチを使用するのかを尋ねていますか?
アダム・リア

回答:


11

私の経験則:

データベースにアクセスするページやユーザー入力の形式を必要とするページは、MVC構造で管理しやすくなります。

必ずしもフレームワーク全体を使用する必要はありません。サイトがかなり単純な場合は、それを必要とする各ページに単純なページコントローラークラスを使用できます(上記を参照)。これはスケーラブルなソリューションではないので、プロジェクトの長期的な目標に留意してください。

以下に、PageControllerのセットアップ(簡単にハッキングされた)の大まかなスケッチを示します。

index.php
--------------------------------------------------------

include 'Controller.php';
include 'Db.php';//db connection
include 'View.php';
$Controller = new MyController(new Db(), new View());
$Controller->route($_GET);
$Controller->render();


Controller.php
--------------------------------------------------------
class Controller($db){

    /* ensure all collaborators are provided */
    public function __construct(Db $db, View $view){
         $this->db = $db;
         $this->db->connect(array('host','db','user','pass'));
         $this->view = $view;
    }

    /* load the appropriate model data */
    public function route($_GET){
        //load the right model data and template
        switch($_GET){
            case $_GET['articles'] === 'cats':
                $this->vars = $this->db->get('cats');
                $this->template = 'cats.php';
                break;
            case $_GET['articles'] === 'dogs':
                break;
                $this->vars = $this->db->get('dogs');
                $this->template = 'dogs.php';
            default:
             $this->vars = array();
        }

    } 

    /* render an html string */
    public function render(){
        echo $this->view->render($this->template,$this->vars);
    }

}

View.php
------------------------------------------------------------
class View.php
    {
     /* return a string of html */
     public function render($template,$vars){
            // this will work - but you could easily swap out this hack for 
            // a more fully featured View class
            $this->vars = $vars;
            ob_start();
            include $template;
            $html = ob_get_clean();
            return $html;
         }

     }

template cats.php
--------------------------------------------------------
$html = '';
$row_template = '%name%,%breed%,%color%';
foreach($this->vars as $row){
    $html .= str_replace(
        array(%name%,%breed%,%color%),
        array($row['name'],$row['breed'],$row['color']),
        $row_template);
    }
echo $html;

Db.php
---------------------------------------------------------------
I haven't bothered writing a db class... you could just use PDO

3

サイトが自明ではないサイズを超えて成長する可能性がある場合は良いと思います。主な理由は、将来、サイトを変更および保守する能力が向上し、ほとんどのプロジェクトでほとんどの作業が保守であるためです。懸念事項、サイト構成を適切に分離し、反復的で乱雑なコードの回避に役立ちます。

MVCは、Webサイトでよく知られ受け入れられているパターンであり、他の人をプロジェクトに参加させる場合に役立ちます。そのためには、おそらく確立されたフレームワークを選択して開始する必要があります。


1

質問への回答に役立つ詳細は提供しませんでしたが、このような場合のデフォルトの推奨事項は「はい、MVCフレームワークを使用します」です。本当に必要な場合にのみ、カスタムソリューションを使用してください。


1

アーキテクチャとして、MVCはプロジェクト/ Webページを複数の部分に分割することに焦点を当てています。これにより、コードまたはユーザーインターフェイスで何かを変更する必要がある場合に、生活が楽になります。

大まかに言って、特にそれらの変更がコード全体に影響する場合にプロジェクトの仕様の変更が予想される場合は、コードを小さなレゴの断片に強制的に分割するアーキテクチャを採用してください。


1

この時点ではありません。あなたのサイトがより大きく、より厄介になるまで待ちます。あなたは自分自身に尋ねるでしょう-物事をより少なくするために私は何ができますか?MVCに関する記事を読むと、きっと気に入っていただけるでしょう。使用するかどうかはもう質問しません。あなたは知るだろう。それはそれを使い始める瞬間です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.