Tutorial Kerangka PHP MVC
⚡ Ringkasan Cerdas
Desain PHP MVC Framework memisahkan data aplikasi dan logika bisnis dari presentasi, menggunakan Model, View, dan Controller. CodeIgniter membuat pola ini menjadi praktis, memungkinkan pengembang PHP membangun aplikasi web yang aman dan mudah dipelihara dengan lebih cepat.
Apa itu kerangka PHP MVC?
PHP MVC adalah pola desain aplikasi yang memisahkan data aplikasi dan logika bisnis (model) dari presentasi (tampilan). MVC adalah singkatan dari Model, View, dan Controller.
Pengontrol memediasi antara model dan tampilan.
Bayangkan pola desain MVC sebagai mobil dan pengemudi.
Mobil tersebut memiliki kaca depan (pandangan) yang digunakan pengemudi (pengendali) untuk memantau lalu lintas di depan, kemudian mempercepat atau mengerem (model) tergantung pada apa yang dilihatnya di depan.
Selanjutnya, mari kita lihat mengapa kerangka kerja yang dibangun berdasarkan pola ini layak digunakan.
Mengapa menggunakan Kerangka PHP MVC?
Framework PHP MVC menyederhanakan pekerjaan dengan teknologi yang kompleks dengan cara:
- Menyembunyikan semua detail implementasi yang rumit
- Menyediakan metode standar yang dapat kita gunakan untuk membangun aplikasi kita.
- Meningkatkan produktivitas pengembang, karena implementasi dasar dari aktivitas seperti menghubungkan ke basis data dan membersihkan input pengguna sudah sebagian diterapkan.
- Mendorong kepatuhan terhadap standar pengkodean profesional.
Pola Desain PHP MVC
Sekarang mari kita bahas secara singkat setiap komponen pola desain MVC.
Pilih Model – bagian ini berkaitan dengan logika bisnis dan data aplikasi. Dapat digunakan untuk melakukan validasi data, mengolah data dan menyimpannya. Datanya bisa berasal dari;
- berkas datar
- Database
- dokumen XML
- Sumber data valid lainnya.
pengawas – Ini adalah bagian yang menangani permintaan pengguna untuk sumber daya dari server.
Sebagai contoh, ketika pengguna meminta URL …/index.php?produk=daftarController akan memuat model produk untuk mengambil data produk, kemudian menampilkan hasilnya dalam tampilan daftar.
Singkatnya, pengontrol menghubungkan model dan tampilan bersama-sama bergantung pada sumber daya yang diminta.
views – Bagian ini berkaitan dengan penyajian data kepada pengguna. Biasanya dalam bentuk halaman HTML.
Jenis kerangka PHP MVC
Memilih kerangka kerja PHP terbaik adalah sebuah tantangan.
Anda tidak perlu menulis kerangka kerja Anda sendiri untuk mendapatkan manfaat dari keunggulan MVC.
Anda sebaiknya hanya mencoba membuat desain aplikasi terkait MVC Anda sendiri untuk memahami cara kerja kerangka MVC.
Setelah Anda merasa nyaman dengan cara kerja kerangka MVC, Anda harus beralih ke kerangka kerja yang matang dan sudah teruji.
Tabel di bawah ini secara singkat menjelaskan beberapa framework PHP populer dan fitur-fitur yang ditawarkan oleh masing-masing framework.
| Kerangka | Deskripsi |
|---|---|
|
|
Ini adalah salah satu framework PHP MVC yang paling populer, sekarang dalam versi utama keempatnya (CodeIgniter 4). Ringan dan memiliki kurva pembelajaran yang singkat. Ia memiliki serangkaian pustaka yang kaya yang membantu membangun situs web dan aplikasi dengan cepat. Pengguna dengan pengetahuan terbatas tentang pemrograman berorientasi objek (OOP) juga dapat menggunakannya. Aplikasi yang dibangun dengan Igniter 4 dapat dengan mudah digunakan. CodePemantik api meliputi;
|
|
Ini adalah kerangka kerja Hierarchical Model View Controller (HMVC) yang aman dan ringan. Catatan: Kohana secara resmi dihentikan pada tahun 2017; rilis stabil terakhirnya adalah 3.3.6 (Juli 2016). Fork komunitas Koseven melanjutkan basis kodenya. Perusahaan yang menggunakan Kohana antara lain; |
|
Framework ini dimodelkan berdasarkan Ruby on Rails dan tetap aktif dipelihara (versi 5.x). Framework ini dikenal dengan konsep-konsep seperti pola desain perangkat lunak, konvensi di atas konfigurasi, ActiveRecord, dan lain-lain. CakePHP aplikasi bertenaga meliputi; |
|
|
Ini adalah kerangka kerja yang kuat yaitu;
Ini ideal untuk pengembanganping aplikasi bisnis. Pada tahun 2020, Zend Framework beralih ke proyek open source Laminas. Aplikasi yang didukung Zend/Laminas meliputi;
Perusahaan-perusahaan yang telah menggunakan kerangka kerja Zend antara lain;
|
Framework PHP MVC vs PHP Biasa: Perbedaan Utama
Apa sebenarnya yang diubah oleh sebuah framework dalam praktiknya? PHP biasa memberi Anda kebebasan penuh, tetapi setiap proyek pada akhirnya harus menciptakan kembali routing, validasi, dan akses basis data dari awal. Sebuah framework PHP MVC menstandarisasi tugas-tugas berulang ini, sehingga kode Anda tetap konsisten di berbagai proyek dan tim.
| Aspek | PHP biasa | Kerangka Kerja PHP MVC |
|---|---|---|
| Code organisasi | HTML, SQL, dan logika yang dicampur dalam satu file. | Dipisahkan menjadi model, tampilan, dan pengontrol. |
| Akses basis data | Kueri yang ditulis tangan di setiap halaman | Pembuat kueri bawaan atau ORM dengan pengikatan parameter |
| Security | Pengembang harus mengingat setiap langkah pengamanan. | Penyaringan input, perlindungan XSS, dan CSRF disertakan. |
| pemeliharaan | Perubahan menyebar secara tak terduga melalui berbagai file. | Setiap lapisan dapat berubah secara independen. |
💡 olymp trade indonesiaTip: Buatlah satu proyek PHP sederhana terlebih dahulu, seperti jajak pendapat di bawah ini; kesulitan dalam mencampuradukkan kode akan membuat nilai pemisahan MVC menjadi jelas.
Memindahkan aplikasi jajak pendapat ke CodeAlat penyala
Dalam tutorialKami telah membuat aplikasi polling PHP. Di sini, kami akan memindahkan kode tersebut ke CodeAlat penyala
- Unduh versi terbaru dari CodePemantik dari mereka website.
- ExtracSalin isi file terkompresi ke direktori pengembangan Anda di direktori server web Anda. Kita akan menggunakan ciopinionpoll sebagai nama folder dalam pelajaran ini.
- Jelajahi URL http://localhost/ciopinionpoll/
The CodeHalaman selamat datang Igniter di atas mengkonfirmasi bahwa kerangka kerja telah terinstal dengan benar. Sekarang kita akan memindahkan aplikasi jajak pendapat kita ke CodeIgniter. Ingatlah bahwa aplikasi kita dibagi menjadi tiga komponen utama, yaitu;
- Pengontrol depan – ini adalah bagian yang merespons URL Meminta dan mengembalikan halaman yang diminta. Kode ini akan dimasukkan ke dalam controller.
- Model – ini adalah kode yang merespons permintaan data dan mengembalikan data yang diminta. Kode ini akan dimasukkan ke dalam model.
- Tampilan – ini adalah kode yang bertanggung jawab untuk memformat dan menampilkan data. Kode ini akan masuk ke tampilan
Pengaturan konfigurasi basis data
Untuk mengkonfigurasi koneksi basis data:
- Buka folder ciopinionpoll
- Buka database.php berkas yang terletak di direktori application/config.
- Temukan baris kode berikut
- Atur nama pengguna menjadi root
- Atur kata sandi ke kata sandi root localhost Anda.
- Tetapkan nama basis data menjadi opinion_poll. Perhatikan bahwa kita akan menggunakan basis data yang dibuat pada pelajaran sebelumnya.
- Simpan perubahan dan tutup file.
Menciptakan Model Kami
Selanjutnya kita akan membuat model kita yang akan memperluas CI_Model. CI_Model adalah bagian dari CodePustaka Igniter. Model akan terletak di application/models. opini_poll_model.php
<?php
class Opinion_poll_model extends CI_Model
{
public function __construct()
{
parent::__construct();
$this->load->database();
}
public function total_votes()
{
$query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries');
return $query->row()->choices_count;
}
public function get_results()
{
$libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow");
$table_rows = '';
for ($i = 1; $i < 5; $i++)
{
$query = $this->db->select('COUNT(choice) as choices_count')
->where('choice', $i)
->get('js_libraries');
$table_rows .= "<tr><td>" . $libraries[$i] . " Got:</td><td><b>" . $query->row()->choices_count . "</b> votes</td></tr>";
}
return $table_rows;
}
public function add_vote($choice)
{
$ts = date("Y-m-d H:i:s");
$data = array('choice' => $choice, 'ts' => $ts);
$this->db->insert('js_libraries', $data);
}
}
?>
SINI,
- “class Opinion_poll_model extends CI_Model…” adalah model kami yang memperluas CI_Model
- “parent::__construct();” memanggil konstruktor CI_Model.
- “$ini->memuat->database();” memuat perpustakaan database sehingga aplikasi kita dapat berinteraksi dengan database
- “$this->db->” adalah CodeRekam jejak Igniter yang aktif. Periksa ini link untuk informasi lebih lanjut tentang catatan aktif.
Membuat Pengontrol Kita
Sekarang mari kita buat controllernya. Kita akan menggunakan yang default. CodeKontroler Igniter terletak di application/controllers/welcome.php. Ganti kode sumbernya dengan kode berikut.
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('opinion_poll_model');
}
public function index() {
if ($this->input->post('submitbutton') && !$this->input->post('vote')) {
echo "<script>alert('You did not vote!');</script>";
}
if ($this->input->post('vote')) {
$this->opinion_poll_model->add_vote($this->input->post('vote'));
$data['total_votes'] = $this->opinion_poll_model->total_votes();
$data['rows'] = $this->opinion_poll_model->get_results();
$this->load->view('results', $data);
} else {
$this->load->view('opinion_poll_form');
}
}
}
/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */
?>
SINI,
- “if (!definisi('BASEPATH')) exit('Tidak ada akses skrip langsung yang diizinkan');” memastikan bahwa pengguna tidak mengakses kelas pengontrol secara langsung
- “kelas Selamat Datang memperluas CI_Controller…” pengontrol kami memperluas kelas CI_Controller
- “public function __construct()” memanggil metode konstruktor kelas CI_Controller dan memuat model Opinion_poll_model kita.
- “public function index()…” adalah fungsi yang dipetakan ke index.php. Fungsi ini menggunakan CodeKelas input Igniter digunakan untuk memeriksa apakah suara telah dikirim, menambahkannya ke basis data, lalu menampilkan hasilnya. Jika array post dari kelas input kosong, maka halaman voting akan dimuat.
- “$this->input->post('…')” adalah CodeKelas input Igniter yang mengambil isi dari variabel global $_POST.
- “$this->opinion_poll_model->add_vote($this->input->post('vote'))” memanggil metode add_vote model untuk menambahkan suara ke dalam database.
Menciptakan Pandangan Kita
Ingat kembali contoh sebelumnya bahwa kita memiliki dua halaman HTML, satu untuk pemungutan suara dan yang lainnya untuk hasil. Kita akan menggunakan kode HTML yang sama dengan sedikit modifikasi untuk membuat tampilan kita. Buat file-file berikut di direktori application/views
opinion_poll_form.php
<html>
<head>
<title>
JavaScript Libraries - Opinion Poll
</title>
</head>
<body>
<h2>JavaScript Libraries - Opinion Poll</h2>
<p><b>What is your favorite JavaScript Library?</b></p>
<form method="POST" action="index.php">
<p>
<input type="radio" name="vote" value="1" /> JQuery
<br />
<input type="radio" name="vote" value="2" /> MooTools
<br />
<input type="radio" name="vote" value="3" /> YUI Library
<br />
<input type="radio" name="vote" value="4" /> Glow </p>
<p>
<input type="submit" name="submitbutton" value="OK" />
</p>
</form>
</body>
</html>
Sekarang mari kita buat halaman hasil result.php
<html>
<head>
<title>JavaScript Libraries - Opinion Poll Results</title>
</head>
<body>
<h2>JavaScript Libraries - Opinion Poll Results</h2>
<p><b>What is your favorite JavaScript Library?</b></p>
<p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p>
<p><table><tr><td>
<?php print($rows); ?>
</tr></td></table></p>
<p><a href="#">Return to voting page</a></p>
</body>
</html>
Menguji aplikasi kami
Dengan asumsi direktori root aplikasi Anda adalah ciopinionpoll, telusuri ke http://localhost/ciopinionpoll/
Halaman pemungutan suara di atas berasal dari tampilan opinion_poll_form kami. Klik OK tanpa memilih opsi apa pun, dan Anda akan melihat pesan peringatan berikut.
Pilih perpustakaan favorit Anda, lalu klik OK. Anda akan melihat halaman hasil berikut.
Ini menegaskan bahwa ketiga lapisan tersebut bekerja bersama-sama: controller menerima suara, model menyimpan dan menghitungnya, dan view menampilkan totalnya.









