Nếu bạn muốn làm việc với Laravel, Symfony hay bất kỳ framework PHP nào, bạn bắt buộc phải hiểu OOP. Lập trình hướng đối tượng không chỉ là cú pháp — đây là cách tư duy giúp bạn viết code có cấu trúc, tái sử dụng được và dễ bảo trì.
Class và Object
Class là bản thiết kế, Object là thực thể được tạo ra từ bản thiết kế đó:
class BaiViet {
public string $tieu_de;
private int $luot_xem = 0;
public function __construct(string $tieu_de) {
$this->tieu_de = $tieu_de;
}
public function tangLuotXem(): void {
$this->luot_xem++;
}
public function getLuotXem(): int {
return $this->luot_xem;
}
}
$bai = new BaiViet("PHP OOP");
$bai->tangLuotXem();
echo $bai->getLuotXem(); // 1
Tính kế thừa (Inheritance)
class NguoiDung {
public function __construct(
public string $ten,
public string $email,
) {}
public function chaoHoi(): string {
return "Xin chào, tôi là {$this->ten}";
}
}
class Admin extends NguoiDung {
public function chaoHoi(): string {
return parent::chaoHoi() . " (Admin)";
}
}
Interface — Hợp đồng giữa các class
Interface định nghĩa các phương thức mà class phải implement, không quan tâm đến cách thực thi:
interface CoThePhanTich {
public function phanTich(string $van_ban): array;
public function layKetQua(): string;
}
class PhanTichCamXuc implements CoThePhanTich {
private array $ket_qua = [];
public function phanTich(string $van_ban): array {
$this->ket_qua = ['sentiment' => 'positive'];
return $this->ket_qua;
}
public function layKetQua(): string {
return json_encode($this->ket_qua);
}
}
Abstract Class
abstract class TaiLieu {
abstract public function render(): string;
public function xuatFile(string $duong_dan): void {
file_put_contents($duong_dan, $this->render());
}
}
class TaiLieuHTML extends TaiLieu {
public function render(): string {
return "<html>...</html>";
}
}
Trait — Tái sử dụng code linh hoạt
PHP không hỗ trợ đa kế thừa, nhưng Trait cho phép tái sử dụng một nhóm phương thức trong nhiều class không liên quan:
trait CoTheLuu {
public function luu(): bool {
return true; // logic lưu vào database
}
}
class BaiViet {
use CoTheLuu;
public string $tieu_de;
}
$bai = new BaiViet();
$bai->luu(); // hoạt động
OOP không phải là mục tiêu — đó là công cụ. Hãy dùng nó khi code thực sự trở nên phức tạp hơn, đừng over-engineer ngay từ đầu.
Kết luận
Bốn trụ cột của OOP — Class/Object, Kế thừa, Interface và Trait — là những gì bạn cần thành thạo để làm việc hiệu quả với PHP hiện đại.
Chưa có bình luận. Hãy là người đầu tiên!