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.

  • 🧩 Pola: MVC membagi aplikasi menjadi Model (data), View (presentasi), dan Controller (penanganan permintaan) untuk kode yang lebih bersih.
  • 🚀 Produktivitas: Framework menyediakan pustaka bawaan untuk akses basis data, validasi, dan sanitasi input, sehingga tim dapat menghadirkan fitur lebih cepat.
  • Pilihan: CodeIgniter, CakePHP, dan Laminas (sebelumnya Zend) tetap menjadi pilihan aktif, sementara Kohana dihentikan pada tahun 2017.
  • Model: In CodeIgniter, model-modelnya memperluas CI_Model dan menggunakan metode Query Builder untuk operasi basis data yang aman.
  • 🎮 Controller: Controller memperluas CI_Controller, membaca input pengguna melalui kelas input, dan memuat tampilan yang sesuai.
  • 📈 Dampak: Memindahkan aplikasi polling PHP sederhana menunjukkan bagaimana struktur MVC mengurangi duplikasi dan menyederhanakan pemeliharaan jangka panjang.

Kerangka Kerja PHP MVC

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

CodeAlat penyala


CodeAlat penyala


https://codeigniter.com/

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;


kohana


kohana


http://kohanaframework.org

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;


CakePHP


CakePHP


www.cakephp.org

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;


Zend

https://getlaminas.org/


Zend (sekarang Laminas)

Ini adalah kerangka kerja yang kuat yaitu;

  • Aman, andal, cepat, dan terukur
  • Mendukung pembuatan layanan web dan API.

Ini ideal untuk pengembanganping aplikasi bisnis. Pada tahun 2020, Zend Framework beralih ke proyek open source Laminas. Aplikasi yang didukung Zend/Laminas meliputi;

  • CMS Pimcore,
  • titikkernel.

Perusahaan-perusahaan yang telah menggunakan kerangka kerja Zend antara lain;

  • BBC
  • Cisco
  • Webex
  • Penawaran.com

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/

CodeHalaman selamat datang Igniter ditampilkan setelah extrackerangka kerja

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

Pengaturan konfigurasi basis data di CodeFile database.php Igniter

  • 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/

Formulir pemungutan suara jajak pendapat yang dibuat oleh CodeAplikasi Igniter

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.

Pesan peringatan validasi ditampilkan ketika tidak ada suara yang dipilih.

Pilih perpustakaan favorit Anda, lalu klik OK. Anda akan melihat halaman hasil berikut.

Halaman hasil jajak pendapat yang menampilkan jumlah suara per JavaPerpustakaan skrip

Ini menegaskan bahwa ketiga lapisan tersebut bekerja bersama-sama: controller menerima suara, model menyimpan dan menghitungnya, dan view menampilkan totalnya.

Pertanyaan Umum Demo Slot

HMVC (Hierarchical Model View Controller) mengorganisir aplikasi ke dalam tiga bagian MVC independen yang dapat saling memanggil. Kerangka kerja seperti kohana HMVC dipopulerkan karena membantu memodularisasi aplikasi besar.

Ya. LARAVEL Saat ini, merupakan framework PHP MVC yang paling populer. Framework ini mengikuti pemisahan Model-View-Controller yang dijelaskan di sini, dengan menambahkan alat-alat seperti Eloquent ORM dan template Blade.

Ya. Alat seperti Kopilot GitHub Anda dapat membuat kerangka model, pengontrol, dan tampilan dari perintah yang diberikan. Namun, Anda tetap perlu meninjau kode yang dihasilkan untuk masalah keamanan seperti output yang tidak di-escape dan injeksi SQL.

Tidak. Asisten AI mempercepat penulisan kode, tetapi kerangka kerja tetap menyediakan struktur yang telah teruji, pengaturan keamanan default, dan konvensi yang membuat aplikasi tetap mudah dipelihara. Keduanya bekerja paling baik bersama-sama.

Nomor CodeAlat penyala sangat ramah bagi pengembang dengan pengalaman pemrograman berorientasi objek yang terbatas. Cukup dengan memahami kelas, metode, dan pewarisan dasar untuk mengikuti pola model dan controllernya.

Ringkaslah postingan ini dengan: