1. Lập trình hướng đối tượng (OOP) trong PHP
Class đóng vai trò như một khuôn mẫu, còn Object là một thực thể cụ thể được tạo ra từ khuôn mẫu đó. Hàm __construct tự động kích hoạt ngay khi đối tượng khởi tạo.
Ví dụ minh họa:
<?php
class Product {
public $name;
public $price;
// Hàm cấu tử
public function __construct($name, $price) {
$this->name = $name;
$this->price = $price;
}
public function getDetails() {
return "Sản phẩm: " . $this->name . " - Giá: " . $this->price . " VND";
}
}
// Khởi tạo đối tượng cụ thể
$item = new Product("Dumbo Red Tail Guppy", 150000);
echo $item->getDetails();
?>
Tính kế thừa cho phép một lớp con tái sử dụng lại các thuộc tính và phương thức từ lớp cha bằng từ khóa extends, giúp tối ưu và tái sử dụng code tốt hơn.
Ví dụ minh họa:
<?php
class Database {
protected $pdo;
public function __construct() {
$this->pdo = new PDO("mysql:host=localhost;dbname=shop_db", "root", "");
}
}
// Lớp con kế thừa từ lớp Database cha
class ProductManager extends Database {
public function getAllProducts() {
$stmt = $this->pdo->query("SELECT * FROM products");
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
?>
Transaction giúp gộp nhiều câu lệnh SQL phức tạp lại xử lý cùng lúc. Nếu một câu lệnh phát sinh lỗi, toàn bộ tiến trình sẽ khôi phục lại trạng thái ban đầu (Rollback), tránh lỗi lệch pha dữ liệu.
Ví dụ minh họa:
<?php
try {
$db = new PDO("mysql:host=localhost;dbname=shop_db", "root", "");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Bắt đầu tiến trình giao dịch
$db->beginTransaction();
// Bước 1: Trừ tiền khách hàng
$db->exec("UPDATE accounts SET balance = balance - 500000 WHERE id = 1");
// Bước 2: Cộng tiền vào tài khoản cửa hàng
$db->exec("UPDATE accounts SET balance = balance + 500000 WHERE id = 2");
// Nếu mọi thứ chạy tốt thì xác nhận lưu thay đổi
$db->commit();
echo "Giao dịch hoàn tất an toàn!";
} catch (Exception $e) {
// Nếu có bất cứ dòng nào lỗi, hủy bỏ toàn bộ tiến trình trước đó
$db->rollBack();
echo "Giao dịch thất bại, dữ liệu phục hồi: " . $e->getMessage();
}
?>
2. Demo Ứng Dụng Lưu Trữ Quản Lý Sản Phẩm (IndexedDB)
Trình diễn mô hình cơ sở dữ liệu quan hệ thu nhỏ trên trình duyệt thông qua IndexedDB để lưu và phân loại nhóm sản phẩm.
Hệ Thống Kho Hàng Thu Nhỏ
| Mã SP (ID) | Tên Mặt Hàng | Danh Mục Phân Loại | Hành Động |
|---|



0 Reviews