MVC (Model-View-Controller) ialah corak seni bina yang digunakan secara meluas dalam pembangunan perisian yang memisahkan aplikasi kepada tiga komponen yang saling berkaitan:
Matlamat utama corak MVC adalah untuk memisahkan kebimbangan, menjadikan aplikasi lebih mudah untuk dikekalkan, skala dan ujian. Ia membolehkan pembangun bekerja pada bahagian aplikasi yang berbeza secara bebas, meningkatkan produktiviti dan organisasi kod.
Dalam PHP, seni bina MVC boleh dilaksanakan dengan menstrukturkan aplikasi anda dengan cara yang memisahkan lapisan data, logik dan pembentangan. Mari terokai cara anda boleh melaksanakan MVC dalam aplikasi PHP.
Model bertanggungjawab untuk logik perniagaan dan manipulasi data. Ia berinteraksi dengan pangkalan data dan menyimpan data yang diproses oleh aplikasi. Model ini juga mengandungi logik untuk mengesahkan dan mengurus data tersebut.
Paparan bertanggungjawab untuk memaparkan data kepada pengguna. Ia mewakili UI aplikasi dan selalunya terdiri daripada HTML, CSS dan JavaScript. Paparan menerima data daripada Pengawal dan memberikannya kepada pengguna.
Pengawal bertindak sebagai pengantara antara Model dan View. Ia memerlukan input pengguna, mengemas kini Model berdasarkan input itu, dan kemudian mengemas kini Paparan dengan data yang telah diproses oleh Model.
Mari laksanakan seni bina MVC asas dalam PHP. Kami akan memecahkan aplikasi kepada tiga folder:
Selain itu, kami memerlukan titik masuk (biasanya index.php) yang memulakan aplikasi dan mengarahkan permintaan.
Kelas Model bertanggungjawab untuk mengendalikan operasi data, seperti mengambil rekod daripada pangkalan data. Katakan kita mempunyai model "Pengguna" yang ringkas.
apl/Model/User.php:
<?php namespace App\Model; class User { private $db; public function __construct($db) { $this->db = $db; } // Fetch all users public function getAllUsers() { $query = "SELECT * FROM users"; $result = $this->db->query($query); return $result->fetchAll(PDO::FETCH_ASSOC); } // Add a new user public function addUser($name, $email) { $query = "INSERT INTO users (name, email) VALUES (:name, :email)"; $stmt = $this->db->prepare($query); $stmt->bindParam(':name', $name); $stmt->bindParam(':email', $email); return $stmt->execute(); } }
Dalam contoh ini, kami mempunyai model Pengguna yang mengendalikan pengambilan semua pengguna daripada pangkalan data dan menambah pengguna baharu.
Paparan mengandungi HTML yang memaparkan data untuk pengguna. Katakan kita mempunyai halaman mudah yang menyenaraikan semua pengguna.
app/View/UserListView.php:
<?php namespace App\View; class UserListView { public function render($users) { echo "<h1>User List</h1>"; echo "<ul>"; foreach ($users as $user) { echo "<li>{$user['name']} - {$user['email']}</li>"; } echo "</ul>"; } }
Dalam contoh ini, kelas UserListView memaparkan senarai pengguna. Ia menerima data pengguna daripada pengawal dan memaparkannya dalam senarai HTML.
Pengawal menerima input daripada pengguna, memprosesnya (cth., mengambil data daripada Model), dan kemudian memaparkan Paparan yang sesuai.
app/Controller/UserController.php:
<?php namespace App\Controller; use App\Model\User; use App\View\UserListView; class UserController { private $userModel; private $userView; public function __construct(User $userModel, UserListView $userView) { $this->userModel = $userModel; $this->userView = $userView; } // Fetch users and pass data to the view public function listUsers() { $users = $this->userModel->getAllUsers(); $this->userView->render($users); } }
Kelas UserController bertanggungjawab untuk mengambil senarai pengguna daripada model Pengguna dan menghantar data tersebut kepada UserListView untuk dipaparkan.
Logik penghalaan menentukan cara permintaan pengguna dikendalikan dan kaedah pengawal yang digunakan.
public/index.php (Titik Kemasukan):
<?php require_once '../vendor/autoload.php'; use App\Controller\UserController; use App\Model\User; use App\View\UserListView; // Database connection (assuming PDO) $db = new PDO('mysql:host=localhost;dbname=your_database', 'root', ''); // Create instances of the Model, View, and Controller $userModel = new User($db); $userView = new UserListView(); $userController = new UserController($userModel, $userView); // Simple Routing (for example purposes) if ($_SERVER['REQUEST_URI'] === '/users') { $userController->listUsers(); }
Dalam fail index.php ini, kami:
Pastikan kelas anda dimuatkan secara automatik menggunakan Komposer. Anda boleh menentukan ruang nama dan struktur folder anda dalam fail composer.json seperti ini:
{ "autoload": { "psr-4": { "App\": "app/" } } }
Jalankan komposer dump-autoload untuk menjana autoloader.
Melaksanakan MVC dalam PHP menawarkan beberapa kelebihan, seperti:
MVC menggalakkan pengasingan kebimbangan, yang bermaksud data (Model), UI (Paparan) dan logik (Pengawal) dipisahkan kepada komponen yang berbeza. Ini menjadikan aplikasi lebih modular dan lebih mudah diselenggara.
Memandangkan logik perniagaan dipisahkan daripada UI, lebih mudah untuk membuat perubahan pada satu bahagian aplikasi tanpa menjejaskan bahagian yang lain. Contohnya, anda boleh mengemas kini UI (Paparan) tanpa mengubah suai logik perniagaan (Model).
Dengan MVC, ia menjadi lebih mudah untuk menulis ujian unit. Anda boleh menguji Model secara bebas daripada Paparan dan Pengawal, yang menjadikan ujian lebih mudah.
Komponen aplikasi MVC boleh diguna semula. Contohnya, Model yang sama boleh digunakan oleh Paparan yang berbeza (seperti menyenaraikan pengguna dalam jadual atau carta), menjadikan kod anda lebih boleh digunakan semula dan fleksibel.
MVC ialah corak seni bina yang sangat berkesan untuk menstrukturkan aplikasi PHP. Ia membantu untuk memisahkan kebimbangan, menjadikan kod lebih mudah untuk dikekalkan dan diuji. Dengan melaksanakan corak MVC dalam PHP, anda boleh membina aplikasi modular berskala dengan struktur yang bersih dan teratur. Menggunakan alatan seperti Composer untuk memuatkan automatik dan mengurus kebergantungan, anda boleh memudahkan lagi proses pembangunan.
Dengan mengikut corak MVC, anda akan memastikan aplikasi PHP anda tersusun dengan baik, cekap dan mudah diselenggara.
Atas ialah kandungan terperinci Memahami Seni Bina MVC dan Cara Melaksanakannya dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!