Membangun Custom PHP MVC Framework
Sudah pernahkah Anda menimbang untuk bermain dalam bahasa pemrograman pada dasarnya tanpa memakai frame-work atau library apa saja? Saya mempunyai waktu senggang sepanjang berlibur dan saya memilih untuk habiskan beberapa saat bermain cukup dengan PHP murni, sejauh ini saya meningkatkan rangka MVC custom saya sendiri dan segampang mungkin.
Membuat rangka kerja Model-View-Controller (MVC) khusus di PHP menjadi pekerjaan yang melawan tetapi berguna. MVC ialah skema design yang pisahkan program jadi tiga elemen khusus: mode, penampilan, dan pengatur. Pembelahan ini memungkinkannya koordinasi code yang lebih bagus dan kekuatan untuk mengubah pada program tanpa mempengaruhi sisi lain dari code. Dalam posting ini, kami akan mengulas beberapa langkah membuat rangka kerja MVC simpel dalam PHP yang hendak menolong Anda pahami beberapa dasar MVC dan langkah membuat sendiri.
Cara 1: Mempersiapkan project
Langkah awal ialah membuat direktori project baru dan mempersiapkan susunan file dasar. Kita membutuhkan beberapa directory berlainan untuk atur code kita, seperti satu untuk pengatur, satu untuk penampilan, dan satu untuk mode. Ini akan menolong jaga code kami masih tetap teratur dan gampang dimengerti. Berikut ini ialah contoh penampilan susunan file:
proyek_mvc_saya/ pengatur/ dilihat/ model/ index.php
Cara 2: Tangani Keinginan
Cara setelah itu tangani keinginan yang masuk dan merutekannya ke pengatur yang tepat. Untuk lakukan ini, kami akan membuat file index.php
di root project. File ini bisa menjadi titik masuk untuk semuanya keinginan yang masuk.
Kami akan memakai faktor $_SERVER['REQUEST_URI']
untuk tentukan pengatur yang mana harus tangani keinginan. Misalkan, keinginan ke /users/index
harus diatasi oleh users index
pengatur Pemakai. Kami akan memakai gestur reguler untuk mengekstrak pengatur dan perlakuan dari URI keinginan. Berikut ini ialah contoh bagaimana kita bisa mengekstrak controller dan action:
$url = $_SERVER['REQUEST_URI'];
$controller_name = 'Home';
$action_name = 'index';
if (preg_match('/\/([a-z]+)/i', $url, $matches)) {
$controller_name = ucfirst($matches[1]);
}
if (preg_match('/\/([a-z]+)/i', $url, $matches)) {
$action_name = $matches[1];
}
Cara 3: Membuat Pengatur
Saat ini kita bisa tentukan pengatur yang mana harus tangani keinginan, kita bisa membuat pengatur kita. Pengatur bertanggungjawab untuk tangani keinginan dan mengupdate mode. Supaya code kami masih tetap teratur, kami akan membuat file terpisah untuk tiap pengatur di controllers
pengatur.
Misalnya, jika permintaan ditangani oleh pengontrol Users
, kami akan menyertakan file
$controller_file = 'controllers/' . $controller_name . '.php';
if (file_exists($controller_file)) {
include($controller_file);
} else {
// handle 404 error
}
Cara 4: Membuat Penampilan
Cara setelah itu membuat penampilan untuk program kita. Penampilan bertanggungjawab untuk tampilkan data ke pemakai. Kami akan membuat file terpisah untuk tiap penampilan di views
tampilan
Supaya code kami masih tetap teratur, kami akan memakai pengatur dan nama perlakuan untuk tentukan penampilan yang mana harus diperlihatkan. Misalkan, keinginan ke /users/index
harus diatasi oleh penampilan views/users/index.php.
Cara 5: Membuat Mode
Mode bertanggungjawab untuk berhubungan dengan database dan mempresentasikan data untuk program kita. Mereka tangani semua nalar yang berkaitan dengan data dan sediakan antar-muka untuk pengatur untuk berhubungan dengan data. Dalam langkah ini, kita akan membuat file terpisah untuk tiap mode di models
mode.
Untuk membikin mode, kita cukup membuat kelas PHP baru dan tentukan property dan sistem yang dibutuhkan. Sebagai contoh,user
model mungkin memiliki properti seperti id
, username
, dan email
, dan metode seperti get_by_id()
dan save()
.
Sesudah kami membuat mode, kami bisa memakainya di pengatur kami untuk berhubungan dengan data. Misalkan, di user
perlakuan index
pengatur, kita kemungkinan memakai mode Pemakai untuk ambil daftar pemakai dari database dan meneruskannya ke penampilan untuk diperlihatkan.
Salah satunya tanggung-jawab pokok mode kami ialah berhubungan dengan database dan konektornya.
Untuk membuat connector database MySQL dalam rangka MVC custom kami, kami bisa membuat kelas baru yang hendak tangani semua hubungan dengan database. Kelas ini bisa diikutkan dalam mode kami dan dipakai untuk berhubungan dengan database.
Berikut contoh penampilan kelas Database
:
Database {
private $host = 'localhost';
private $username = 'root';
private $password = '';
private $db_name = 'my_mvc_project';
private $conn;
public function __construct() {
$this->conn = new mysqli($this->host, $this->username, $this->password, $this->db_name);
if ($this->conn->connect_error) {
die("Connection failed: " . $this->conn->connect_error);
}
}
public function query($sql) {
return $this->conn->query($sql);
}
public function close() {
$this->conn->close();
}
}
Dalam perumpamaan ini, kelas Database
mempunyai faktor pribadi $conn
yang disebut turunan dari kelas mysqli
. Ini ialah kelas PHP yang dipakai untuk berhubungan dengan database MySQL. Konstruktor kelas akan membuat jaringan ke database memakai kelas mysqli
. Diperlukan 4 patokan: host, username, sandi, dan nama database. Dalam masalah ini, kami sudah meng-hardcode mereka di kelas tapi mereka dapat dilanjutkan di konstruktor bila Anda ingin membuat code lebih fleksibel.
Sistem query
dipakai untuk menyelesaikan query SQL pada database. Diperlukan satu patokan, query SQL, dan kembalikan hasil query. Dan sistem close
dipakai untuk tutup jaringan database.
Saat ini, dalam mode kita, kita bisa mengikutkan kelas Database
ini dan memakainya untuk berhubungan dengan database. Misalkan, mode user
kemungkinan mempunyai sistem seperti get_by_id()
yang ambil pemakai dari database dengan ID mereka.
class User {
private $db;
public function __construct() {
$this->db = new Database();
}
public function get_by_id($id) {
$sql = "SELECT * FROM users WHERE id = $id";
$result = $this->db->query($sql);
return $result->fetch_assoc();
}
public function save($user) {
// Prepare and execute SQL query to insert or update user data
}
public function __destruct() {
$this->db->close();
}
}
Penting untuk tutup jaringan database saat tak lagi dibutuhkan untuk menahan kebocoran sumber daya. Dalam perumpamaan ini, sistem __destruct
dipakai untuk tutup jaringan saat object dihancurkan.
Sama seperti yang Anda saksikan, class ini sediakan langkah simpel untuk berhubungan dengan database MySQL dan bisa secara mudah dipadukan ke frame-work MVC custom. Harus diingat jika ini hanya contoh salah satunya langkah untuk membuat connector database dalam rangka kerja MVC custom, penting untuk Anda untuk menimbang keamanan saat berhubungan dengan database, seperti memakai pengakuan yang dipersiapkan untuk menghindar injeksi SQL.
Cara 6: Memakai Komposer
Memakai Komposer ialah langkah yang baik untuk mengurus dependensi dalam project PHP, dan ini benar-benar bermanfaat saat membuat rangka kerja MVC khusus. Komposer ialah pengurus keterikatan untuk PHP yang memungkinkannya Anda secara mudah mengikutkan dan mengurus pustaka dan paket faksi ke-3 dalam project Anda.
Berikut beberapa langkah untuk memakai Komposer dalam rangka MVC custom kami:
Cara A: Instal Komposer
Untuk memakai Composer, pertama kali Anda harus menginstal di mesin Anda. Anda bisa mengambil penginstal dari website Komposer dan menjalankannya untuk memasang Komposer.
Cara B: Buat file composer.json
Cara setelah itu membuat file composer.json
di root project Anda. File ini akan tentukan dependensi untuk project Anda.
Misalkan, bila Anda ingin memakai pustaka database seperti Doctrine ORM untuk berhubungan dengan database, Anda akan menambahnya ke require
bagian file composer.json
:
{
"require": {
"doctrine/orm": "^2.7"
}
}
Cara C: Instal Keterikatan
Sesudah file composer.json
dibikin, Anda bisa jalankan perintah composer install
untuk memasang dependensi.
Saat Anda jalankan perintah ini, Composer akan secara automatis mengambil pustaka dan paket yang dibutuhkan dan meletakkannya di directory vendor
.
Cara D: Berisi Automatis Keterikatan
Cara paling akhir ialah berisi automatis dependensi agar dipakai secara mudah di semua project Anda. Komposer sediakan pemuat automatis, yang bisa Anda masukkan dalam project Anda.
require 'vendor/autoload.php';
Saat ini Anda dapat memakai kelas DoctrineORMEntityManager
untuk berhubungan dengan database Anda.
Dengan memakai Composer, Anda bisa secara mudah mengurus dependensi dalam project Anda, terhitung mengupdate dan menghapusinya sama sesuai keperluan. Ini memungkinkannya Anda untuk secara mudah membagi project Anda sama orang lain, karena mereka cukup jalankan perintah composer install
untuk memasang semua dependensi.
Penting untuk dicatat jika ada langkah lain untuk memakai komposer dalam project PHP dan ini hanya salah satunya contoh langkah memakainya. , ini hanya contoh bagaimana memakai perpustakaan di komposer, itu akan bergantung dari sesuatu yang ingin Anda raih, jadi Anda kemungkinan harus mempelajari dan putuskan perpustakaan apa yang terbaik untuk keperluan detil Anda.