Pola untuk pemula: MVC vs MVP vs MVVM. Deskripsi pola arsitektur MVC Mvc




Kerangka kerja bootstrap: tata letak adaptif cepat

Kursus video langkah demi langkah tentang dasar-dasar tata letak adaptif dalam kerangka Bootstrap.

Pelajari cara menyusun huruf secara sederhana, cepat dan efisien menggunakan alat yang ampuh dan praktis.

Tata letak untuk memesan dan mendapatkan bayaran.

Kursus gratis "Situs di WordPress"

Apakah Anda ingin menguasai CMS WordPress?

Dapatkan pelajaran tentang desain dan tata letak situs web di WordPress.

Belajar bekerja dengan tema dan memotong tata letak.

Kursus video gratis tentang menggambar desain, tata letak, dan pemasangan situs web di CMS WordPress!

*Arahkan mouse untuk menjeda pengguliran.

Mundur ke depan

Pendekatan Ramah untuk Pengembangan Web: Model MVC

Apa itu MVC? Singkatnya, ini adalah pendekatan pengembangan yang memungkinkan Anda mencapai kode yang lebih terstruktur dan aplikasi secara keseluruhan.

MVC adalah singkatan dari Model-View-Controller. Mari kita bicarakan ini lebih detail.

Saat ini, ada dua cara paling umum untuk membuat aplikasi web (situs).

Cara pertama, sebut saja "Klasik", mengasumsikan bahwa satu file dapat berisi kode untuk berbagai bahasa pemrograman dan markup.

Katakanlah di awal file, permintaan dibuat ke database untuk mendapatkan beberapa informasi darinya. Di sini kita berurusan dengan bahasa SQL - bahasa query khusus yang dirancang untuk berinteraksi dengan database.

Setelah ini, sebagai aturan, markup html halaman dimulai (di mana kita tanpanya?). Selain itu, di dalam markup html, kode PHP dimasukkan di tempat yang tepat, yang mengontrol situs dan logikanya. Secara total, kami memiliki satu file: SQL, (X)HTML dan PHP. Ini sudah menjadi gado-gado. Jangan lupa untuk menambahkan lebih banyak CSS dan sedikit Javascript di sini untuk melengkapi gambarannya, dan pada akhirnya kita akan mendapatkan kekacauan sehingga iblis sendiri yang akan mematahkan kakinya di file ini.

Tentu saja, pada awalnya Anda akan mengingat apa dan bagaimana yang terjadi di dalamnya, mengapa Anda membutuhkannya, dan di mana Anda perlu melakukan perubahan untuk menambah/menghapus/memodifikasi fungsi tertentu. Namun, saya jamin bahwa dalam beberapa bulan Anda akan melihat kode Anda dengan bingung, mencoba mengingat apa hubungannya dengan apa, perubahan apa yang akan "diimplementasikan" setelah mengubah file, dll.

Saya tidak mengatakan bahwa pendekatan ini harus ditinggalkan sepenuhnya, namun jelas bahwa pendekatan ini harus digunakan secara bijaksana dan sangat hati-hati.

Cara kedua terhubung secara tepat dengan penggunaan skema "Pengontrol Tampilan Model".

Apa inti dari pendekatan ini, dan bagaimana penggunaannya dapat membantu Anda dalam pekerjaan Anda?

Ide utama dari pendekatan ini adalah kebutuhan memisahkan elemen homogen ke dalam file yang berbeda. Sederhananya: satu file - satu bahasa. Tapi ini adalah contoh yang sangat kasar. Ini sangat jarang terjadi.

Selain gagasan untuk menyimpan bahasa yang berbeda dalam file yang berbeda, konsep kuncinya juga demikian membagi file menjadi beberapa kelompok sesuai dengan fungsi yang dijalankannya dalam aplikasi.

Di sini kita mulai mendekati model MVC secara lebih rinci.

Model ini melibatkan pembagian semua file yang terlibat dalam pengembangan situs web menjadi tiga kelompok:

1. File dari grup "model".
2. File dari grup "pengontrol".
3. File dari grup "tampilan".

Di sini penting untuk segera dipahami bahwa nama skema MVC adalah sebuah konvensi. Aplikasi Anda, tentu saja, dapat memiliki banyak model, pengontrol, dan tampilan (yaitu, file yang termasuk dalam kelompok ini berdasarkan fungsi yang dijalankannya dan struktur internalnya).

Jadi mari kita lihat diagram perbandingan model MVC dan metode pengembangan "klasik"..


Di sisi kiri Anda melihat apa yang kita bicarakan di atas. Di bagian atas halaman terdapat kueri SQL ke database. Kemudian markup ditambah sisipan PHP.

Di sebelah kanan adalah diagram paling sederhana dari model MVC. Dalam skema ini operasi yang terkait dengan interaksi dengan database terjadi dalam model: mengambil data, mengubah dan menghapusnya, menghitung jumlah record pada tabel tertentu, dll.

Pengontrol berisi logika aplikasi, yaitu apa yang menentukan fungsinya.

Tampilan ini dimaksudkan untuk ditampilkan kepada pengguna akhir.

Panah dua arah pada diagram menunjukkan bahwa terdapat hubungan pada pasangan “Model - Controller” dan “Controller - View”. Mari kita perhatikan hubungan ini lebih detail dengan menggunakan diagram berikut sebagai contoh.


Dalam diagram ini kami telah menambahkan dua elemen baru: browser pengguna dan database. Mari kita lihat keseluruhan siklus secara umum: dari browser mengakses URL tertentu hingga halaman tersebut ditampilkan kepada pengguna:

1. Pengguna memasukkan alamat dan browser menghubungi pengontrol.

2. Pengontrol mengakses model.

3. Model mengakses database (misalnya, untuk memperoleh informasi yang diperlukan untuk keluaran)

4. Informasi dari database dikembalikan ke model.

5. Informasi ditransfer dari model ke pengontrol.

6. Pengontrol meneruskan informasi ini ke tampilan.

7. Tampilan ditampilkan di browser menggunakan controller.

Ini adalah skema umum pengoperasian model ini. Seperti yang Anda lihat, browser dan database menonjol secara terpisah dalam diagram ini. Benar-benar, browser hanya dapat mengakses pengontrol karena pengontrol adalah bagian dari url. Pengunjung tidak dapat mengakses apa pun selain pengontrol. Ini penting untuk dipahami. Seseorang tidak dapat mengakses tampilan atau model melalui bilah alamat. Itu hanya berinteraksi dengan pengontrol.

Dalam hal ini, kita dapat berbicara tentang pengontrol sebagai semacam “pusat distribusi”. Lihat sendiri: pengontrol memproses permintaan pengguna, pengontrol mengakses model, dan pengontrol adalah perantara untuk menampilkan tampilan di browser.

Elemen kedua yang menonjol adalah database. Dan itu benar. Dalam kerangka konsep MVC, diterima bahwa Hanya model yang boleh bekerja dengan database Namun terkadang prinsip ini dilanggar. Dalam hal ini, interaksi dengan database dilakukan dari pengontrol atau bahkan tampilan.

Tentu saja, Anda tidak boleh bertindak terlalu jauh dan melanggar struktur dan prinsip MVC, namun terkadang penyimpangan dari aturan seperti itu bisa sangat berguna dalam meningkatkan keterbacaan kode dan memahami skema operasi aplikasi.

Model, omong-omong, adalah elemen opsional dalam skema MVC. Sangat mungkin untuk mengimplementasikan semua yang Anda butuhkan tanpa menggunakan model sama sekali. Secara alami, dalam hal ini Anda akan berinteraksi dengan database dari pengontrol dan melihat file. Seperti yang sudah Anda pahami, ini bukanlah bentuk yang bagus. Setelah Anda memutuskan untuk bekerja dalam kerangka konsep ini, disarankan untuk menggunakan model dan melakukannya untuk tujuan yang dimaksudkan.

Kami melihat "ekstrim", tetapi trinitas kami tetap berada di tengah diagram, tempat interaksi "Model - Pengontrol" dan "Pengontrol - Tampilan" berlangsung.

Setelah kita mempelajari dasar-dasar cara kerja model ini, kita dapat memikirkan tentang manfaat pendekatan ini dan mengapa pendekatan ini lebih disukai daripada pendekatan klasik.

Manfaat utama menggunakan skema seperti itu dalam pekerjaan Anda telah disebutkan - ini meningkatkan struktur kode dan aplikasi secara keseluruhan. Bukan rahasia lagi bahwa model MVC telah diadopsi oleh banyak produsen framework, termasuk CodeIgniter favorit saya.

Lagi pula, apa itu kerangka kerja? Jika kita membuang kata asingnya, maka ini hanyalah sebuah kerangka kerja, struktur tertentu yang dengannya Anda diminta untuk mengembangkan sebuah situs web. Struktur ini cukup universal untuk membuat hampir semua situs web dengan bantuannya. Pada saat yang sama, yang sangat penting, kerangka kerja ini juga sangat fleksibel, memungkinkan Anda mencapai apa yang Anda butuhkan.

Dengan kata lain, kerangka kerja adalah kerangka fleksibel yang membatasi Anda dalam hal struktur, namun tidak membatasi Anda dalam hal fungsionalitas.

Kembali ke pertanyaan tentang MVC, kita dapat melihat bahwa banyak kerangka kerja menggunakan pendekatan ini: mereka menyediakan struktur aplikasi yang cukup jelas, yang juga membagi file menjadi tipe, model, dan pengontrol. Semua ini bersama-sama dapat menghemat banyak waktu jika Anda menghabiskannya untuk mempelajari cara menggunakan kerangka dan model MVC.

Keuntungan lain dari model MVC meliputi pembagian kode berdasarkan fungsinya. Anda tidak perlu lagi menelusuri kekacauan kueri SQL, markup, dan kode PHP. Jika Anda perlu memperbaiki atau mengubah sesuatu, Anda akan tahu persis file mana yang perlu Anda edit.

Di bawah ini Anda dapat melihat bagian file yang termasuk dalam grup "views":


Dan berikut ini potongan kode dari modelnya:


Seperti inilah tampilan pengontrolnya:


Keuntungan yang sangat penting, seperti yang Anda lihat, adalah memisahkan tampilan dari kode. Seringkali perlu mengubah desain atau bahkan struktur situs, sambil mempertahankan informasi yang sama pada halaman yang ditampilkan sebelumnya. Dan di sini dimulailah pengeditan kode yang campur aduk, yang menjadi semakin sulit seiring berjalannya waktu.

Keunggulan model MVC justru terletak pada kemampuannya untuk sepenuhnya kecualikan pengeditan desain situs saat mengubah logika aplikasi. Anda dapat mengubah salah satu dari tiga elemen: Model, Tampilan, Pengontrol. Dalam hal ini, Anda tidak perlu melakukan perubahan pada elemen lain, karena elemen tersebut sampai batas tertentu bersifat otonom.

Isu otonomi sangat relevan untuk model dan spesies. Setelah Anda menulisnya, Anda biasanya dapat menggunakannya dengan sukses untuk berbagai proyek dengan sedikit atau tanpa pengeditan. Ini menghemat banyak waktu karena tidak perlu menulis kode serupa berulang kali.

Keuntungan menggunakan model MVC dalam kerangka tersebut sudah jelas, misalnya CodeIgniter yang sama.

Bukan rahasia lagi bahwa setiap situs web memiliki banyak fungsi yang serupa, atau bahkan identik. Ingat saja formulir umpan balik atau navigasi halaman. Ini hanyalah momen “eksternal” yang paling mencolok. Anda akan menemukan lebih banyak kesamaan dalam kode yang tidak terlihat oleh rata-rata pengguna, dalam kode yang berjalan di server.

Hampir semua pengembang web dihadapkan pada kebutuhan untuk menggunakan fungsi PHP yang serupa, melakukan query database yang serupa, dll. Produsen kerangka kerja telah melakukan hal yang sangat penting di sini - mereka telah mencoba mengelompokkan fungsi-fungsi yang paling sering digunakan ke dalam file terpisah, memberikan peluang baru bagi webmaster dan pemrogram web.

Kini Anda dapat melakukan hal-hal yang sering dibutuhkan tanpa terlalu memikirkan cara penerapannya. Anda dapat menulis beberapa baris kode daripada beberapa lusin baris, sehingga menghemat waktu dan lebih fokus pada logika cara kerja aplikasi daripada cara mengimplementasikannya.

Dan semua ini terjadi dalam kerangka konsep MVC, memungkinkan Anda mencapai hampir semua hasil menggunakan kerangka tersebut. Pada saat yang sama, Anda mendapatkan tingkat keterbacaan kode yang tinggi. Apa lagi yang Anda butuhkan untuk pekerjaan yang nyaman dan produktif?

Kata penutup: Jangan lupa bahwa struktur apa pun yang dibuat untuk mempermudah penyelesaian tugas tertentu dibuat hanya untuk mempermudah pekerjaan.

Anda tidak boleh mematuhi prinsip MVC jika Anda yakin prinsip tersebut berdampak buruk pada pemahaman Anda tentang struktur aplikasi. Bukan Anda yang harus “membungkuk” di bawah model, tetapi model di bawah Anda.

Dmitry Naumenko

P.S. Apakah Anda memikirkan framework PHP mana yang harus dikuasai? Perhatikan CakePHP - ini mengimplementasikan pola MVC yang dibahas di atas, dan saat ini Anda bisa mendapatkan kursus video pengantar singkat untuk mendapatkan gambaran umum tentang kemampuan kerangka ini:

Apakah Anda menyukai materinya dan ingin mengucapkan terima kasih?
Cukup bagikan dengan teman dan kolega Anda!


Menurut pendapat saya, setiap pengembang, dan bukan hanya seorang programmer, harus mengetahui MVC untuk memastikan ekstensibilitas proyek yang terbaik.

MVC bukan hanya sebuah arsitektur perangkat lunak, tetapi juga sebuah konsep pengembangan. Saya tidak mengatakan bahwa artikel ini akan memberi tahu Anda semua rahasia MVC, tetapi Anda pasti bisa mendapatkan pemahaman awal. Lalu http://pogugli.com/?74600

Konsep MVC (Model-View-Controller) sangat sering disebutkan dalam dunia pemrograman web dalam beberapa tahun terakhir. Setiap orang yang terhubung dengan pengembangan aplikasi web pasti pernah menemukan akronim ini dalam satu atau lain cara. Hari ini kita akan memahami apa itu konsep MVC dan mengapa konsep tersebut menjadi populer.

Sejarah kuno

MVC bukanlah pola proyek, ini adalah pola desain yang menjelaskan bagaimana membangun struktur aplikasi kita, tanggung jawab dan interaksi setiap bagian dalam struktur ini.

Ini pertama kali dijelaskan pada tahun 1979, tentu saja, untuk lingkungan yang berbeda. Tidak ada konsep aplikasi web saat itu. Tim Berners Lee menabur benih World Wide Web (WWW) di awal tahun sembilan puluhan dan mengubah dunia selamanya. Template yang kami gunakan saat ini merupakan adaptasi dari template asli untuk pengembangan web.

Popularitas struktur ini dalam aplikasi web disebabkan oleh penyertaannya dalam dua lingkungan pengembangan yang menjadi sangat populer: Struts dan Ruby on Rails. Kedua lingkungan pengembangan ini menentukan jalur bagi ratusan lingkungan pengembangan yang dibuat kemudian.

MVC untuk aplikasi web

Ide di balik pola desain MVC sangat sederhana: kita perlu memisahkan tanggung jawab dengan jelas untuk berbagai fungsi dalam aplikasi kita:

Aplikasi ini dibagi menjadi tiga komponen utama, yang masing-masing bertanggung jawab atas tugas berbeda. Mari kita lihat komponen secara detail menggunakan sebuah contoh.

Pengendali

Pengontrol mengelola permintaan pengguna (diterima sebagai permintaan HTTP GET atau POST ketika pengguna mengklik elemen antarmuka untuk melakukan berbagai tindakan). Fungsi utamanya adalah untuk memanggil dan mengoordinasikan tindakan dari sumber daya dan objek yang diperlukan untuk melakukan tindakan yang ditentukan oleh pengguna. Biasanya, pengontrol memanggil model yang sesuai untuk tugas tersebut dan memilih tampilan yang sesuai.

Model

Model adalah data dan aturan yang digunakan untuk mengoperasikan data yang mewakili konsep bagaimana suatu aplikasi dikendalikan. Dalam aplikasi apa pun, seluruh struktur dimodelkan sebagai data yang diproses dengan cara tertentu. Apa yang dimaksud dengan pengguna untuk suatu aplikasi - pesan atau buku? Hanya data yang harus diproses sesuai aturan (tanggal tidak boleh menunjuk ke masa depan, email harus dalam format tertentu, nama tidak boleh lebih dari X karakter, dan seterusnya).

Model memberikan pengontrol representasi data yang diminta pengguna (pesan, halaman buku, album foto, dll.). Model datanya akan tetap sama tidak peduli bagaimana kita ingin menyajikannya kepada pengguna. Oleh karena itu, kami memilih tampilan apa pun yang tersedia untuk menampilkan data.

Model berisi bagian terpenting dari logika aplikasi kita, logika yang memecahkan masalah yang kita hadapi (forum, toko, bank, dll). Pengontrol pada dasarnya berisi logika organisasi untuk aplikasi itu sendiri (seperti tata graha).

Melihat

Tampilan menyediakan cara berbeda untuk merepresentasikan data yang diperoleh dari model. Ini bisa berupa template yang berisi data. Ada beberapa jenis yang berbeda, dan pengontrol memilih mana yang paling cocok untuk situasi saat ini.

Aplikasi web biasanya terdiri dari sekumpulan pengontrol, model, dan tampilan. Pengontrol dapat dirancang sebagai pengontrol utama yang menerima semua permintaan dan memanggil pengontrol lain untuk melakukan tindakan tergantung pada situasinya.

Mari kita lihat sebuah contoh

Katakanlah kita perlu mengembangkan toko buku online. Pengguna dapat melakukan tindakan berikut: melihat buku, mendaftar, membeli, menambahkan item ke pesanan saat ini, membuat atau menghapus buku (jika dia adalah administrator). Mari kita lihat apa yang terjadi ketika pengguna mengklik suatu kategori fantasi untuk melihat judul buku yang tersedia di toko kami.

Kami memiliki pengontrol khusus untuk menangani semua tindakan yang terkait dengan buku (melihat, mengedit, membuat, dll.). Sebut saja buku_controller.php dalam contoh kita. Kami juga membutuhkan model seperti buku_model.php, yang memproses data dan logika yang terkait dengan item penyimpanan. Kesimpulannya, kita memerlukan beberapa tampilan untuk merepresentasikan data, seperti daftar buku, halaman edit, dan lain sebagainya.

Gambar berikut menunjukkan bagaimana permintaan pengguna untuk melihat daftar buku tentang suatu topik diproses fantasi:

Pengontrol (books_controller.php) menerima permintaan pengguna (permintaan HTTP GET atau POST). Kita dapat membuat pengontrol pusat, misalnya index.php, yang menerima permintaan dan memanggil books_controller.php.

Pengontrol memeriksa permintaan dan parameter dan kemudian memanggil model (book_model.php), meminta dia memiliki daftar buku yang tersedia tentang topik tersebut fantasi.

Model menerima data dari database (atau sumber lain yang menyimpan informasi), menerapkan filter dan logika yang diperlukan, lalu mengembalikan data yang mewakili daftar buku.

Pengontrol menggunakan tampilan yang sesuai untuk menyajikan data kepada pengguna. Jika permintaan berasal dari telepon seluler, tampilan telepon seluler digunakan; jika pengguna menggunakan desain antarmuka tertentu, maka tampilan yang sesuai dipilih, dan seterusnya.

Apa kelebihannya?

Manfaat paling nyata yang kita peroleh dari penggunaan konsep MVC adalah pemisahan yang jelas antara logika presentasi (antarmuka pengguna) dan logika aplikasi.

Mendukung berbagai jenis pengguna yang menggunakan berbagai jenis perangkat merupakan tantangan umum saat ini. Antarmuka yang disediakan harus berbeda jika permintaan berasal dari komputer pribadi atau dari ponsel. Model mengembalikan data yang sama, satu-satunya perbedaan adalah pengontrol memilih tampilan berbeda untuk mengeluarkan data.

Selain mengisolasi pandangan dari logika aplikasi, konsep MVC secara signifikan mengurangi kompleksitas aplikasi besar. Kode ini jauh lebih terstruktur, sehingga lebih mudah untuk memelihara, menguji, dan menggunakan kembali solusi.

Mengapa menggunakan lingkungan kerja?

Saat Anda menggunakan meja kerja, struktur dasar MVC sudah disiapkan dan yang perlu Anda lakukan hanyalah memperluas struktur dengan menempatkan file Anda di direktori yang sesuai agar sesuai dengan pola MVC. Selain itu, Anda akan memiliki serangkaian fitur yang telah ditulis dan diuji dengan baik.

Mari kita lihat cakePHP sebagai contoh meja kerja MVC. Setelah instalasi, Anda akan memiliki tiga direktori utama:

  • kue/
  • vendor/

Map aplikasi adalah tempat file Anda berada. Ini adalah tempat untuk mengembangkan bagian aplikasi Anda.

Di folder cake menghosting file cakePHP (fungsi meja kerja).

Map vendor digunakan untuk menyimpan perpustakaan PHP pihak ketiga.

Ruang kerja Anda (direktori aplikasi) memiliki struktur berikut:

  • aplikasi/
    • konfigurasi/
    • pengontrol/
    • lokal/
    • model/
    • plugin/
    • tes/
    • vendor/
    • tampilan/
    • akar web/

Anda perlu menempatkan pengontrol Anda di direktori controllers, model Anda di direktori model, dan pandangan Anda di direktori views!

Setelah Anda mulai menggunakan lingkungan produksi, akan segera menjadi jelas di mana hampir setiap bagian aplikasi Anda yang perlu dibuat atau dimodifikasi berada. Organisasi ini sendiri sangat menyederhanakan proses pengembangan dan pemeliharaan aplikasi.

Menggunakan meja kerja untuk contoh kita

Karena tutorial ini tidak dimaksudkan untuk menunjukkan proses pembuatan aplikasi menggunakan cakePHP, kami hanya akan menampilkan kode untuk model, pengontrol, dan tampilan dengan komentar tentang manfaat menggunakan meja kerja MVC. Kode tersebut sengaja disederhanakan dan tidak cocok untuk digunakan dalam aplikasi nyata.

Ingat, kami sedang melihat toko buku dan pengguna penasaran yang ingin melihat daftar lengkap buku tentang topik tersebut fantasi. Pengontrol menerima permintaan pengguna dan mengoordinasikan tindakan yang diperlukan.

Jadi, segera setelah pengguna mengklik tombol tersebut, browser meminta url yang diberikan:

1 www.ourstore.com/books/list/fantasy

CakePHP memformat URL menggunakan pola /controller/action/param1/param2, Di mana tindakan adalah fungsi yang dipanggil oleh pengontrol. Dalam bentuk klasik lama, urlnya akan terlihat seperti ini:

1 www.ourstore.com/books_controller.php?action=list&category=fantasy

Pengendali

Di lingkungan kerja cakePHP, pengontrol kita akan terlihat seperti ini:

1
kelas BooksController memperluas AppController (

daftar fungsi($kategori) (

$ini ->set("buku" , $ini ->Buku->findAllByCategory($kategori));

}

fungsi tambahan() ( ... ... )

fungsi hapus () ( ... ... )

... ... } ?>

Sederhana, bukan? Pengontrol ini akan disimpan sebagai buku_controller.php dan diposting di /app/controllers. Ini berisi daftar fungsi yang melakukan tindakan seperti contoh kita, serta fungsi lain untuk melakukan operasi terkait buku (menambahkan buku baru, menghapus buku, dan sebagainya).

Lingkungan kerja memberi kita banyak solusi siap pakai dan kita hanya perlu membuat daftar buku. Ada kelas dasar yang sudah mendefinisikan fungsionalitas dasar pengontrol, jadi Anda perlu mewarisi properti dan fungsi kelas ini ( Pengontrol Aplikasi adalah pewarisnya Pengendali).

Yang harus Anda lakukan dalam daftar tindakan adalah memanggil model untuk mendapatkan data dan kemudian memilih tampilan untuk menyajikannya kepada pengguna. Begini cara melakukannya.

ini->Buku- ini adalah model kami, dan bagian dari kodenya:

1 $ini ->Buku->findAllByCategory($category)

memberitahu model untuk mengembalikan daftar buku tentang topik yang dipilih (kita akan melihat modelnya nanti).

metode mengatur Di barisan:

1 $ini ->set("buku" , $ini ->Buku->findAllByCategory($kategori));

Pengontrol meneruskan data ke tampilan. Variabel buku menerima data yang dikembalikan oleh model dan membuatnya tersedia untuk dilihat.

Sekarang yang tersisa hanyalah menampilkan tampilannya, namun fungsi ini dilakukan secara otomatis di cakePHP jika kita menggunakan tampilan default. Jika kita ingin menggunakan tipe yang berbeda, kita harus memanggil metode tersebut secara eksplisit memberikan.

Model

Modelnya lebih sederhana lagi:

1
Buku kelas memperluas AppModel (

}

?>

Mengapa kosong? Karena mewarisi dari kelas dasar yang menyediakan fungsionalitas yang diperlukan dan kita perlu menggunakan konvensi penamaan CakePHP agar runtime menangani semua tugas lainnya secara otomatis. Misalnya, cakePHP mengetahui berdasarkan namanya model ini digunakan Pengontrol Buku, dan memiliki akses ke tabel database bernama books.

Dengan definisi ini, kita akan memiliki model yang hanya bisa membaca, menghapus, atau menyimpan data di database.

Simpan kode sebagai buku.php dalam folder /aplikasi/model.

Melihat

Yang perlu kita lakukan sekarang adalah membuat tampilan (setidaknya satu) untuk daftar tindakan. Tampilannya akan memiliki kode HTML dan beberapa (sesedikit mungkin) baris kode PHP untuk mengulang array buku yang disediakan model.

1














Nama Pengarang Harga

Seperti yang Anda lihat, tampilan tidak membuat halaman penuh, tetapi hanya sebagian dari HTML (dalam hal ini tabel). Karena CakePHP menyediakan cara lain untuk mendefinisikan template halaman, dan tampilan dimasukkan ke dalam template tersebut. Meja kerja juga memberi kita beberapa objek pembantu untuk melakukan tugas-tugas umum saat membuat bagian halaman HTML (memasukkan formulir, tautan, Ajax atau JavaScript).

Simpan tampilan sebagai daftar.ctp(list adalah nama tindakan dan ctp berarti template CakePHP) di dalam folder /app/views/books(karena ini adalah tampilan untuk tindakan pengontrol).

Beginilah cara ketiga komponen dijalankan menggunakan meja kerja CakePHP!

Pada artikel ini kita akan memahami konsep MVC, dan bagaimana, dengan menggunakan contoh, kita dapat menerapkannya di PHP.

Konsep MVC

MVC(Pengontrol tampilan model, " Model-Tampilan-Perilaku», « Pengontrol Tampilan Model") adalah pola desain aplikasi yang logika kontrolnya dibagi menjadi tiga komponen terpisah sehingga modifikasi salah satunya akan berdampak minimal pada komponen lainnya.

Templat MVC baik untuk digunakan saat membuat proyek kompleks yang memerlukan pemisahan pekerjaan pemrogram PHP (atau membagi sekelompok pemrogram menjadi beberapa departemen), perancang, perancang tata letak, dll.

Pola MVC memisahkan pemrosesan presentasi, data, dan interaksi pengguna menjadi tiga komponen terpisah:

Model MVC(Model). Model menyediakan data (biasanya ke View) dan juga merespons permintaan (biasanya dari Controller) dengan mengubah statusnya.

Tampilan MVC(Melihat). Bertanggung jawab untuk menampilkan informasi (antarmuka pengguna).

Perilaku MVC(Pengendali). Menafsirkan masukan pengguna dan menginformasikan model dan tampilan untuk meresponsnya.

Untuk memperjelas diagram tindakan template MVC, ilustrasi diberikan di bawah ini.

Komponen seperti presentasi dan perilaku bergantung pada model, tetapi tidak mempengaruhinya sama sekali. Sebuah model dapat memiliki banyak tampilan. Konsep MVC mungkin sulit untuk dipahami, tetapi setelah Anda memahaminya, konsep tersebut menjadi sangat diperlukan ketika mengembangkan aplikasi dalam PHP.

MVC di PHP

Fitur khusus saat menggunakan MVC di PHP adalah adanya satu titik masuk ke dalam aplikasi PHP, yang misalnya dicapai sebagai berikut. Index.php dibuat di mana semua permintaan akan diproses untuk melakukan ini, buat file .htaccess di folder dengan indeks dan tempatkan kode berikut di dalamnya:

Mesin Penulis Ulang di RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule ^(.*)$ index.php?route=$1

Pada kode yang disediakan, baris pertama memeriksa keberadaan file yang diminta, dan jika tidak ada, maka dialihkan ke index.php, jika tidak, permintaan gambar situs pun akan dialihkan ke indeks. Baris kode terakhir mengubah permintaan seperti index.php?route=chat/index menjadi index.php/chat/index. Jika Anda tidak memiliki kemampuan untuk menggunakan ModRewrite di aplikasi Anda, maka Anda harus melakukan pengalihan secara manual.

Model PHP

Data tentang model PHP terdapat dalam atributnya dan hanya dapat diubah melalui fungsi khusus. Sebuah model dapat berisi beberapa tampilan. Biasanya, phpmodel adalah kelas yang bekerja dengan database, lebih khusus lagi: menulis, membaca, menghapus. Tentu saja, membaca informasi dari database dapat diimplementasikan melalui beberapa tampilan (fungsi). Sebagai contoh, model artikel di situs web: Anda bisa mendapatkan artikel tertentu dari database, daftar kategori terbaru, populer, beberapa... ini semua adalah representasi model. Untuk lebih jelasnya, contoh model php diberikan di bawah ini.

Pengontrol PHP (Perilaku)

Pengontrol PHP menerima permintaan pengguna yang kami kirimkan melalui index.php, dan sesuai dengan permintaan tersebut, sesuaikan pengoperasian model. Akan lebih tepat untuk mengatakan bahwa mereka mengontrol pengoperasian aplikasi PHP.

Representasi PHP

Tampilan memantau perubahan model dan membuat atau mengubah antarmuka aplikasi php.

Daftar Data

nama depan ?>

nama belakang?>

Bagaimana cara kerjanya?PHPTemplat MVC?

Ketika pengguna mengakses url yang diperlukan, pengontrol yang sesuai dipilih, yang mengakses tampilan dan model, dan informasi ditampilkan. Dengan kata lain, pengontrol di mvc adalah penghubung antara model dan tampilan.

Keuntungan template MVC saat membuat aplikasi PHP

Seperti disebutkan di atas, pertama-tama, ini adalah pembedaan pengembang situs PHP ke dalam departemen. Kecepatan suatu aplikasi PHP juga meningkat jika dibuat suatu proyek yang besar. Nah, yang langsung menjadi perhatian pengembang PHP sendiri adalah penataan kode PHP yang benar (semuanya ada pada tempatnya, sehingga lebih mudah dipahami).

Contoh MVC

Kita tidak akan terlalu memikirkan contoh cara kerja MVC, karena kita sudah memilikinya. Saya hanya akan menambahkan beberapa diagram lagi untuk pemahaman yang lebih mendalam.

Skema lain tentang cara kerja template MVC di PHP, lebih dari mudah untuk dipahami.

Konsep MVC (Model-View-Controller) sangat sering disebutkan dalam dunia pemrograman web dalam beberapa tahun terakhir. Setiap orang yang terhubung dengan pengembangan aplikasi web pasti pernah menemukan akronim ini dalam satu atau lain cara. Hari ini kita akan memahami apa itu konsep MVC dan mengapa konsep tersebut menjadi populer.

Sejarah kuno

MVC bukanlah pola proyek, ini adalah pola desain yang menjelaskan bagaimana membangun struktur aplikasi kita, tanggung jawab dan interaksi setiap bagian dalam struktur ini.

Ini pertama kali dijelaskan pada tahun 1979, tentu saja, untuk lingkungan yang berbeda. Tidak ada konsep aplikasi web saat itu. Tim Berners Lee menabur benih World Wide Web (WWW) di awal tahun sembilan puluhan dan mengubah dunia selamanya. Template yang kami gunakan saat ini merupakan adaptasi dari template asli untuk pengembangan web.

Popularitas struktur ini dalam aplikasi web disebabkan oleh penyertaannya dalam dua lingkungan pengembangan yang menjadi sangat populer: Struts dan Ruby on Rails. Kedua lingkungan pengembangan ini menentukan jalur bagi ratusan lingkungan pengembangan yang dibuat kemudian.

MVC untuk aplikasi web

Ide di balik pola desain MVC sangat sederhana: kita perlu memisahkan tanggung jawab dengan jelas untuk berbagai fungsi dalam aplikasi kita:

Aplikasi ini dibagi menjadi tiga komponen utama, yang masing-masing bertanggung jawab atas tugas berbeda. Mari kita lihat komponen secara detail menggunakan sebuah contoh.

Pengendali

Pengendali mengelola permintaan pengguna (diterima sebagai permintaan HTTP GET atau POST ketika pengguna mengklik elemen antarmuka untuk melakukan berbagai tindakan). Fungsi utamanya adalah untuk memanggil dan mengoordinasikan tindakan dari sumber daya dan objek yang diperlukan untuk melakukan tindakan yang ditentukan oleh pengguna. Biasanya, pengontrol memanggil model yang sesuai untuk tugas tersebut dan memilih tampilan yang sesuai.

Model

Model- Ini adalah data dan aturan yang digunakan untuk bekerja dengan data yang mewakili konsep pengelolaan aplikasi. Dalam aplikasi apa pun, seluruh struktur dimodelkan sebagai data yang diproses dengan cara tertentu. Apa yang dimaksud dengan pengguna untuk suatu aplikasi - pesan atau buku? Hanya data yang harus diproses sesuai aturan (tanggal tidak boleh menunjuk ke masa depan, email harus dalam format tertentu, nama tidak boleh lebih dari X karakter, dan seterusnya).

Model memberikan pengontrol representasi data yang diminta pengguna (pesan, halaman buku, album foto, dll.). Model datanya akan tetap sama tidak peduli bagaimana kita ingin menyajikannya kepada pengguna. Oleh karena itu, kami memilih tampilan apa pun yang tersedia untuk menampilkan data.

Model berisi bagian terpenting dari logika aplikasi kita, logika yang memecahkan masalah yang kita hadapi (forum, toko, bank, dll). Pengontrol pada dasarnya berisi logika organisasi untuk aplikasi itu sendiri (seperti tata graha).

Melihat

Melihat menyediakan cara berbeda untuk merepresentasikan data yang diperoleh dari model. Ini bisa berupa template yang berisi data. Ada beberapa jenis yang berbeda, dan pengontrol memilih mana yang paling cocok untuk situasi saat ini.

Aplikasi web biasanya terdiri dari sekumpulan pengontrol, model, dan tampilan. Pengontrol dapat dirancang sebagai pengontrol utama yang menerima semua permintaan dan memanggil pengontrol lain untuk melakukan tindakan tergantung pada situasinya.

Mari kita lihat sebuah contoh

Katakanlah kita perlu mengembangkan toko buku online. Pengguna dapat melakukan tindakan berikut: melihat buku, mendaftar, membeli, menambahkan item ke pesanan saat ini, membuat atau menghapus buku (jika dia adalah administrator). Mari kita lihat apa yang terjadi ketika pengguna mengklik suatu kategori fantasi untuk melihat judul buku yang tersedia di toko kami.

Kami memiliki pengontrol khusus untuk menangani semua tindakan yang terkait dengan buku (melihat, mengedit, membuat, dll.). Sebut saja buku_controller.php dalam contoh kita. Kami juga membutuhkan model seperti buku_model.php, yang memproses data dan logika yang terkait dengan item penyimpanan. Kesimpulannya, kita memerlukan beberapa tampilan untuk merepresentasikan data, seperti daftar buku, halaman edit, dan lain sebagainya.

Gambar berikut menunjukkan bagaimana permintaan pengguna untuk melihat daftar buku tentang suatu topik diproses fantasi:

Pengontrol (books_controller.php) menerima permintaan pengguna (permintaan HTTP GET atau POST). Kita dapat membuat pengontrol pusat, misalnya index.php, yang menerima permintaan dan memanggil books_controller.php.

Pengontrol memeriksa permintaan dan parameter dan kemudian memanggil model (book_model.php), meminta dia memiliki daftar buku yang tersedia tentang topik tersebut fantasi .

Model menerima data dari database (atau sumber lain yang menyimpan informasi), menerapkan filter dan logika yang diperlukan, lalu mengembalikan data yang mewakili daftar buku.

Pengontrol menggunakan tampilan yang sesuai untuk menyajikan data kepada pengguna. Jika permintaan berasal dari telepon seluler, tampilan telepon seluler digunakan; jika pengguna menggunakan desain antarmuka tertentu, maka tampilan yang sesuai dipilih, dan seterusnya.

Apa kelebihannya?

Manfaat paling nyata yang kita peroleh dari penggunaan konsep MVC adalah pemisahan yang jelas antara logika presentasi (antarmuka pengguna) dan logika aplikasi.

Mendukung berbagai jenis pengguna yang menggunakan berbagai jenis perangkat merupakan tantangan umum saat ini. Antarmuka yang disediakan harus berbeda jika permintaan berasal dari komputer pribadi atau dari ponsel. Model mengembalikan data yang sama, satu-satunya perbedaan adalah pengontrol memilih tampilan berbeda untuk mengeluarkan data.

Selain mengisolasi pandangan dari logika aplikasi, konsep MVC secara signifikan mengurangi kompleksitas aplikasi besar. Kode ini jauh lebih terstruktur, sehingga lebih mudah untuk memelihara, menguji, dan menggunakan kembali solusi.

Mengapa menggunakan lingkungan kerja?

Saat Anda menggunakan meja kerja, struktur dasar MVC sudah disiapkan dan yang perlu Anda lakukan hanyalah memperluas struktur dengan menempatkan file Anda di direktori yang sesuai agar sesuai dengan pola MVC. Selain itu, Anda akan memiliki serangkaian fitur yang telah ditulis dan diuji dengan baik.

Mari kita lihat cakePHP sebagai contoh meja kerja MVC. Setelah instalasi, Anda akan memiliki tiga direktori utama:

  • kue/
  • vendor/

Map aplikasi adalah tempat file Anda berada. Ini adalah tempat untuk mengembangkan bagian aplikasi Anda.

Di folder kue file cakePHP (fungsi meja kerja) dihosting.

Map vendor berfungsi untuk menyimpan perpustakaan PHP pihak ketiga.

Ruang kerja Anda (direktori aplikasi) memiliki struktur berikut:

  • aplikasi/
    • konfigurasi/
    • pengontrol/
    • lokal/
    • model/
    • plugin/
    • tes/
    • vendor/
    • tampilan/
    • akar web/

Anda perlu menempatkan pengontrol Anda di direktori pengontrol, model di direktori model dan mengetik di direktori pandangan!

Setelah Anda mulai menggunakan lingkungan produksi, akan segera menjadi jelas di mana hampir setiap bagian aplikasi Anda yang perlu dibuat atau dimodifikasi berada. Organisasi ini sendiri sangat menyederhanakan proses pengembangan dan pemeliharaan aplikasi.

Menggunakan meja kerja untuk contoh kita

Karena tutorial ini tidak dimaksudkan untuk menunjukkan proses pembuatan aplikasi menggunakan cakePHP, kami hanya akan menampilkan kode untuk model, pengontrol, dan tampilan dengan komentar tentang manfaat menggunakan meja kerja MVC. Kode tersebut sengaja disederhanakan dan tidak cocok untuk digunakan dalam aplikasi nyata.

Ingat, kami sedang melihat toko buku dan pengguna penasaran yang ingin melihat daftar lengkap buku tentang topik tersebut fantasi. Pengontrol menerima permintaan pengguna dan mengoordinasikan tindakan yang diperlukan.

Jadi, segera setelah pengguna mengklik tombol tersebut, browser meminta url yang diberikan:

www.ourstore.com/books/list/fantasy

CakePHP memformat URL menggunakan pola /controller/action/param1/param2, Di mana tindakan adalah fungsi yang dipanggil oleh pengontrol. Dalam bentuk klasik lama, urlnya akan terlihat seperti ini:

www.ourstore.com/books_controller.php?action=list&category=fantasy

Pengendali

Di lingkungan kerja cakePHP, pengontrol kita akan terlihat seperti ini:

kelas BooksController memperluas AppController (

Daftar fungsi($kategori) (

$ini->set("buku", $ini->Buku->findAllByCategory($kategori));

Fungsi tambah() ( ... ... )

Fungsi hapus() ( ... ... )

... ... } ?>

Sederhana, bukan? Pengontrol ini akan disimpan sebagai buku_controller.php dan diposting di /app/controllers. Ini berisi daftar fungsi yang melakukan tindakan seperti contoh kita, serta fungsi lain untuk melakukan operasi terkait buku (menambahkan buku baru, menghapus buku, dan sebagainya).

Lingkungan kerja memberi kita banyak solusi siap pakai dan kita hanya perlu membuat daftar buku. Ada kelas dasar yang sudah mendefinisikan fungsionalitas dasar pengontrol, jadi Anda perlu mewarisi properti dan fungsi kelas ini ( Pengontrol Aplikasi adalah pewarisnya Pengendali).

Yang perlu Anda lakukan dalam daftar tindakan adalah memanggil model untuk mendapatkan data dan kemudian memilih tampilan untuk menyajikannya kepada pengguna. Begini cara melakukannya.

ini->Buku- ini adalah model kami, dan bagian dari kodenya:

$ini->Buku->findAllByCategory($category)

memberitahu model untuk mengembalikan daftar buku tentang topik yang dipilih (kita akan melihat modelnya nanti).

metode mengatur Di barisan:

$ini->set("buku", $ini->Buku->findAllByCategory($kategori));

Pengontrol meneruskan data ke tampilan. Variabel buku menerima data yang dikembalikan oleh model dan membuatnya tersedia untuk dilihat.

Sekarang yang tersisa hanyalah menampilkan tampilannya, namun fungsi ini dilakukan secara otomatis di cakePHP jika kita menggunakan tampilan default. Jika kita ingin menggunakan tipe yang berbeda, kita harus memanggil metode tersebut secara eksplisit memberikan.

Model

Modelnya lebih sederhana lagi:

Buku kelas memperluas AppModel (

Mengapa kosong? Karena mewarisi dari kelas dasar yang menyediakan fungsionalitas yang diperlukan dan kita perlu menggunakan konvensi penamaan CakePHP agar runtime menangani semua tugas lainnya secara otomatis. Misalnya, cakePHP mengetahui berdasarkan namanya model ini digunakan Pengontrol Buku, dan memiliki akses ke tabel database bernama books.

Dengan definisi ini, kita akan memiliki model yang hanya bisa membaca, menghapus, atau menyimpan data di database.

Simpan kode sebagai buku.php dalam folder /aplikasi/model.

Melihat

Yang perlu kita lakukan sekarang adalah membuat tampilan (setidaknya satu) untuk daftar tindakan. Tampilannya akan memiliki kode HTML dan beberapa (sesedikit mungkin) baris kode PHP untuk mengulang array buku yang disediakan model.












Nama Pengarang Harga

Seperti yang Anda lihat, tampilan tidak membuat halaman penuh, tetapi hanya sebagian dari HTML (dalam hal ini tabel). Karena CakePHP menyediakan cara lain untuk mendefinisikan template halaman, dan tampilan dimasukkan ke dalam template tersebut. Meja kerja juga memberi kita beberapa objek pembantu untuk melakukan tugas-tugas umum saat membuat bagian halaman HTML (memasukkan formulir, tautan, Ajax atau JavaScript).

Simpan tampilan sebagai daftar.ctp(list adalah nama tindakan dan ctp berarti template CakePHP) di dalam folder /app/views/books(karena ini adalah tampilan untuk tindakan pengontrol).

Beginilah cara ketiga komponen dijalankan menggunakan meja kerja CakePHP!

Pertama, tentu saja, ini adalah model atau, dengan kata lain, pendekatan untuk mengembangkan situs web dan aplikasi di Internet, dan kedua, MVC digunakan untuk meningkatkan efisiensi sistem yang sedang dikembangkan, serta untuk memastikan keamanan. dan ketahanan terhadap peretasan.

MVC adalah singkatan dari Model-melihat-pengontrol dan secara harfiah dapat diterjemahkan sebagai Pengontrol Tampilan Model.

Meskipun model pengembangannya terkesan baru, namun model ini telah lama terbukti dan banyak digunakan dalam pengembangan situs web, termasuk. Konsep MVC pertama kali dijelaskan oleh Trygve Reenskaug pada tahun 1979.

Konsep MVC atau terdiri dari apa

Model MVC mencakup tiga komponen: Model, View dan Controller.

Yang terpenting disini tentu saja Modelnya. Model adalah seperangkat prosedur dan algoritma untuk pengolahan data. Model itu sendiri tidak berisi data, tetapi biasanya mengambilnya dari database dan memprosesnya sesuai dengan algoritma yang telah ditentukan sebelumnya. Jika kita berbicara tentang pengembangan Web, modelnya akan berisi sekumpulan kelas dan fungsi, misalnya dalam PHP.

Elemen kedua adalah Tampilan. Memungkinkan Anda menampilkan informasi. Jika ini adalah situs web, maka informasinya ditampilkan di browser. Saat mengembangkan situs web, tampilan berisi kode HTML yang menggantikan variabel yang diambil bukan dari model, tetapi dari pengontrol.

Jadi, elemen ketiga adalah Pengendali. Fungsi utamanya adalah untuk menyediakan komunikasi antara pengguna dan model. Mungkin juga berisi kode PHP.

Banyak pengembang pemula tidak menggunakan Model atau menggunakannya hanya untuk mengakses database, yang merupakan kesalahan besar, tidak benar dan bertentangan dengan logika model MVC. Dan semua kode utama ditempatkan di Controller. Konsekuensinya adalah, pertama, kode yang besar, dan kedua, kecepatan aplikasi yang lebih rendah. Nah, membuat perubahan pada kode aplikasi semacam itu jauh lebih sulit.

Misalnya, pertimbangkan model MVC untuk situs berita

Pengguna mendarat di halaman situs. Dia diperlihatkan halaman default dengan daftar berita tertentu. Informasi untuk menghasilkan berita diambil dari database.

Saat pengguna mengetik halaman tertentu di bilah alamat browser, permintaan diteruskan ke pengontrol, dan fungsi diluncurkan yang memprosesnya dan memuat Model.

Model, setelah menerima data yang diperlukan, sudah diproses dan dikelompokkan ke dalam objek atau array, akan menghasilkan query ke database. Setelah menerima data, Model membentuknya menjadi bentuk tertentu dan mentransfernya ke Controller, dan kemudian ditransfer ke View. Tidak akan terjadi kesalahan jika data diteruskan langsung ke Tampilan. Namun sekali lagi, tindakan yang tidak perlu digunakan, yang pada akhirnya menyebabkan waktu pemuatan situs dan aplikasi lebih lama.

Tampilan, setelah menerima array atau objek dengan berita, memuat kode HTML tertentu, CSS, jika perlu, dan javascript menampilkan semua ini kepada pengguna.

Model ini digunakan di banyak sistem kontrol dan framework, salah satunya adalah CodeIgniter yang baru-baru ini mendapatkan kehidupan baru.

Jadi, dengan menggunakan model MVC, Anda dapat dengan mudah membuat sistem administrasi untuk situs web atau aplikasi Internet. Jadi framework CodeIgniter menggunakan model ini dengan tepat.