Kapan menggunakan MVC

11

Saya membangun situs dengan PHP dan backend MySQL. Tapi, saya saat ini tidak menggunakan jenis kerangka apa pun. Haruskah saya menggunakan Model View Controller?

Ryan
sumber
3
Anda tidak perlu menggunakan kerangka kerja untuk menggunakan pola desain MVC. Anda dapat menyusun kode Anda sendiri untuk menggunakan MVC.
Amy Anuszewski
5
Apakah Anda bertanya apakah Anda harus menggunakan kerangka kerja atau apakah Anda harus menggunakan pendekatan MVC secara umum?
Adam Lear

Jawaban:

11

Aturan praktis saya:

halaman apa pun yang mengenai database atau membutuhkan input pengguna dalam bentuk apa pun akan lebih mudah dikelola dengan struktur MVC.

Anda tidak perlu pergi dengan kerangka keseluruhan, jika situs ini cukup sederhana, Anda dapat menggunakan kelas Pengontrol Halaman sederhana untuk setiap halaman yang membutuhkannya ( lihat di atas ). Ini bukan solusi yang dapat diskalakan - jadi ingatlah tujuan jangka panjang proyek ini.

Berikut ini sketsa kasar pengaturan PageController (cepat diretas bersama):

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
sunwukung
sumber
3

Saya akan mengatakan bahwa akan lebih baik jika ada kemungkinan bahwa situs tersebut dapat tumbuh melampaui ukuran non-sepele. Alasan utamanya adalah Anda memperoleh kemampuan yang lebih baik untuk mengubah dan memelihara situs di masa depan dan pemeliharaan adalah sebagian besar pekerjaan di sebagian besar proyek. Ini memberi Anda pemisahan kekhawatiran, organisasi situs, dan membantu menghindari kode berulang dan berantakan.

MVC adalah pola yang terkenal dan diterima untuk situs web dan itu akan membantu jika Anda membawa orang lain ke dalam proyek. Untuk itu Anda mungkin ingin memilih kerangka kerja yang mapan untuk memulai.

Penjaga penjara
sumber
1

Anda tidak memberikan detail apa pun yang dapat membantu menjawab pertanyaan, tetapi rekomendasi default saya dalam hal ini adalah "ya, gunakan kerangka kerja MVC". Pergi dengan solusi khusus hanya ketika Anda benar-benar yakin bahwa Anda membutuhkannya.

Adam Byrtek
sumber
1

Sebagai arsitektur, MVC berfokus pada pemisahan proyek / halaman web Anda menjadi beberapa bagian. Ini dapat membuat hidup Anda lebih mudah ketika Anda harus mengubah sesuatu dalam kode atau antarmuka pengguna.

Rule of thumb, jika Anda mengharapkan perubahan dalam spesifikasi tentang proyek Anda terutama ketika perubahan itu mempengaruhi seluruh kode, maka pergi dengan arsitektur yang memaksa Anda untuk memecah kode menjadi potongan-potongan lego kecil.

Thanos Papathanasiou
sumber
1

Tidak pada titik ini. Tunggu hingga situs Anda menjadi lebih besar dan berantakan. Anda akan bertanya pada diri sendiri - apa yang bisa saya lakukan untuk membuat segalanya tidak berantakan? Anda akan membaca sebuah artikel di MVC dan Anda akan menyukainya. Anda tidak akan mempertanyakan apakah akan menggunakannya atau tidak lagi. Kamu akan tahu. Itu akan menjadi saat untuk mulai menggunakannya.

Emanuil Rusev
sumber