Tutorial Kerangka PHP MVC: Contoh CodeIgniter
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 memiliki kaca depan (tampilan) yang digunakan pengemudi (pengendali) untuk memantau lalu lintas di depan, lalu kecepatan atau rem (model) tergantung pada apa yang dilihatnya di depan.
Mengapa menggunakan Kerangka PHP MVC?
- Kerangka kerja PHP MVC menyederhanakan pekerjaan dengan teknologi yang kompleks dengan;
- Menyembunyikan semua detail implementasi yang rumit
- Menyediakan metode standar yang dapat kita gunakan untuk membangun aplikasi kita.
- Peningkatan produktivitas pengembang, hal ini karena implementasi dasar aktivitas seperti menghubungkan ke database, membersihkan input pengguna, dll. sudah dilaksanakan sebagian.
- Kepatuhan terhadap standar pengkodean profesional
Pola Desain PHP MVC
Sekarang mari kita bahas secara singkat setiap komponen pola desain MVC.
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 berhubungan dengan permintaan pengguna akan sumber daya dari server.
Misalnya ketika pengguna meminta URL …/index.php?produk=daftar, pengontrol 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. Ini 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 menjelaskan secara singkat beberapa framework php populer dan fitur yang ditawarkan setiap framework.
Kerangka | Description |
---|---|
|
Ini adalah salah satu kerangka kerja PHP MVC paling populer. Ringan dan memiliki kurva belajar yang singkat. Ia memiliki serangkaian perpustakaan yang membantu membangun situs web dan aplikasi dengan cepat. Pengguna dengan pengetahuan terbatas tentang pemrograman OOP juga dapat menggunakannya. Aplikasi yang didukung CodeIgniter meliputi; |
|
Ini adalah Hierarchical Model View Controller HMVC yang aman dan ringan. Memiliki seperangkat komponen yang lengkap untuk mengembangkan aplikasi dengan cepat. Perusahaan yang menggunakan Kohana meliputi; |
|
Bahasa ini dimodelkan berdasarkan Ruby on Rails. Bahasa ini dikenal dengan konsep-konsep seperti pola desain perangkat lunak, konvensi atas konfigurasi, ActiveRecord, dsb. CakePHP aplikasi bertenaga meliputi; |
|
Ini adalah kerangka kerja yang kuat yaitu;
Ini menampilkan API dari vendor seperti Amazon, Google, Flickr, Yahoo dll. Ini ideal untuk mengembangkan aplikasi bisnis. Aplikasi yang didukung Zend meliputi;
Perusahaan yang menggunakan kerangka Zend meliputi;
|
Porting aplikasi jajak pendapat ke CodeIgniter
Dalam tutorial, kami membuat aplikasi polling PHP. Di sini, kita akan mem-porting kode tersebut ke CodeIgniter
- Unduh versi terbaru CodeIgniter dari mereka website.
- Ekstrak isi file zip ke direktori pengembangan Anda di direktori server web Anda. Kami akan menggunakan ciopinionpoll sebagai nama folder dalam pelajaran ini.
- Telusuri ke URL http://localhost/ciopinionpoll/
Kami sekarang akan mem-porting aplikasi jajak pendapat kami ke CodeIgniter. Ingatlah bahwa aplikasi kita dibagi menjadi tiga komponen utama yaitu;
- Pengontrol depan – ini adalah bagian yang merespons permintaan URL dan mengembalikan halaman yang diminta. Kode ini akan masuk ke controller
- Model – ini adalah kode yang merespons data yang diminta dan mengembalikan data yang diminta. Kode ini akan masuk ke dalam model
-
Tampilan – ini adalah kode yang bertanggung jawab untuk memformat dan menampilkan data. Kode ini akan masuk ke tampilan
- Telusuri ke folder ciopinionpoll
- Buka database.php file yang terletak di direktori aplikasi/konfigurasi.
- Temukan baris kode berikut
Pengaturan konfigurasi basis data
- Atur nama pengguna menjadi root
- Tetapkan kata sandi ke kata sandi root localhost Anda
- Nama database menjadi opinion_poll. Catatan kita akan menggunakan database yang dibuat pada pelajaran sebelumnya.
- Simpan perubahan dan tutup file.
Menciptakan Model Kami
Selanjutnya kita akan membuat model yang akan memperluas CI_Model. CI_Model adalah bagian dari perpustakaan CodeIgniter. Model akan ditempatkan di aplikasi/model opini_poll_model.php
<?php class Opinion_poll_model extends CI_Model { public function __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++) { $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; $result = $model-> select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; } 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
- “…orang tua:: __construct();” memanggil konstruktor CI_Model
- “$ini->memuat->database();” memuat perpustakaan database sehingga aplikasi kita dapat berinteraksi dengan database
- “$this->db->” adalah record aktif CodeIgniter. Periksa ini link untuk informasi lebih lanjut tentang catatan aktif.
Membuat Kontroler Sekarang mari kita buat kontrolernya. Kita akan menggunakan kontroler CodeIgniter bawaan yang ada 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
- “fungsi publik __construct()” memanggil metode konstruktor kelas CI_Controller dan memuat model Opinion_poll_model kami
- “indeks fungsi publik()…” adalah fungsi yang dipetakan ke index.php. ia menggunakan kelas input CodeIgniter untuk memeriksa apakah suara telah dikirimkan, menambahkannya ke database lalu menampilkan hasilnya. Jika array post dari kelas input kosong, maka halaman voting akan dimuat.
- “$this->input->post('…')” adalah kelas input CodeIgniter yang mengambil konten 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 satu lagi untuk hasil. Kita akan menggunakan kode HTML yang sama dengan modifikasi minimal untuk membuat tampilan. Buat 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 ciopinion, jelajahi http://localhost/ciopionpoll/
Klik tombol OK, Anda akan melihat pesan peringatan berikut
Pilih kandidat favorit Anda lalu klik OK Anda akan melihat halaman hasil berikut
Kesimpulan
CodeIgniter adalah kerangka kerja PHP MVC yang mudah dipelajari dan digunakan yang dapat sangat mengurangi waktu yang dihabiskan untuk mengembangkan aplikasi.
CodeIgniter adalah kerangka kerja PHP MVC yang mudah dipelajari dan digunakan yang dapat sangat mengurangi waktu yang dihabiskan untuk mengembangkan aplikasi.
Kesimpulan
- Kerangka kerja adalah sekumpulan perpustakaan yang menyediakan implementasi sebagian dari tugas-tugas umum.
- PHP memiliki sejumlah kerangka kerja MVC open source yang matang dan teruji.
- Pendekatan pengembangan yang baik memisahkan data dari presentasi dan mendorong penggunaan titik masuk tunggal ke dalam suatu aplikasi.
- Aplikasi PHP tradisional yang mengikuti praktik terbaik desain aplikasi dapat di-porting ke kerangka kerja MVC dengan sedikit modifikasi.