Trong lập trình hướng đối tượng (OOP), lớp (class) và đối tượng (object) là hai khái niệm trung tâm. Class là một mô hình hoặc bản thiết kế từ đó chúng ta có thể tạo ra các đối tượng, còn đối tượng là một thực thể cụ thể được tạo ra từ class. Bài viết này sẽ giúp bạn hiểu rõ hơn về cách sử dụng class và object trong PHP cũng như cách chúng hoạt động.
1. Class và Object là gì?
Class
Class là một khuôn mẫu định nghĩa các thuộc tính (properties) và phương thức (methods) cho các đối tượng thuộc class đó. Mỗi class đại diện cho một loại đối tượng với các đặc điểm và hành vi giống nhau.
Ví dụ, bạn có thể tạo một class Car đại diện cho xe ô tô. Class này có thể có các thuộc tính như màu sắc, hãng sản xuất và phương thức như chạy hoặc dừng lại.
class Car {
public $color;
public $brand;
public function drive() {
echo "The car is driving";
}
public function stop() {
echo "The car has stopped";
}
}Object - đối tượng
Object là một thực thể cụ thể của một class. Khi bạn tạo một đối tượng, nó có các thuộc tính và hành vi được định nghĩa bởi class, nhưng có thể có các giá trị khác nhau cho các thuộc tính.
Ví dụ, đối với class Car, bạn có thể tạo ra một đối tượng xe với màu đỏ và một đối tượng khác với màu xanh.
$car1 = new Car();
$car1->color = "Red";
$car1->brand = "Toyota";
$car1->drive(); // Output: The car is driving
$car2 = new Car();
$car2->color = "Blue";
$car2->brand = "Ford";
$car2->stop(); // Output: The car has stopped2. Khai báo một class trong PHP
Trong PHP, để khai báo một class, chúng ta sử dụng từ khóa class, sau đó là tên của class. Bên trong class, bạn có thể định nghĩa các thuộc tính và phương thức. Các thuộc tính và phương thức này có thể có các mức độ truy cập khác nhau: public, protected, hoặc private.
class Car {
// Thuộc tính
public $color;
public $brand;
// Phương thức
public function drive() {
echo "The car is driving";
}
public function stop() {
echo "The car has stopped";
}
}2.1. Thuộc tính -properties
Các thuộc tính là các biến được khai báo bên trong class và lưu trữ thông tin của đối tượng. Các thuộc tính có thể có các mức truy cập khác nhau: public, private, hoặc protected.
- Public: Thuộc tính hoặc phương thức có thể được truy cập từ bất cứ đâu, bao gồm cả bên ngoài class.
- Private: Chỉ có thể truy cập từ bên trong class định nghĩa.
- Protected: Có thể truy cập từ bên trong class và các class con.
class Car {
public $color; // Có thể truy cập từ bên ngoài class
private $engine; // Chỉ có thể truy cập bên trong class
protected $brand; // Có thể truy cập từ class con
public function setEngine($engine) {
$this->engine = $engine;
}
public function getEngine() {
return $this->engine;
}
}2.2. Phương thức -methods
Phương thức là các hàm được khai báo bên trong class, chúng có thể tương tác với các thuộc tính và thực hiện các thao tác khác. Phương thức cũng có các mức truy cập tương tự như thuộc tính (public, private, protected).
class Car {
public $color;
public function drive() {
echo "The car is driving";
}
private function checkEngine() {
echo "Checking engine...";
}
protected function maintain() {
echo "Maintaining the car...";
}
}3. Tạo đối tượng từ class
Sau khi định nghĩa một class, bạn có thể tạo ra các đối tượng từ class đó bằng từ khóa new. Mỗi đối tượng sẽ có các thuộc tính và phương thức giống như đã định nghĩa trong class, nhưng có thể có các giá trị khác nhau cho thuộc tính.
$myCar = new Car();
$myCar->color = "Red";
echo $myCar->color; // Output: Red
$myCar->drive(); // Output: The car is driving4. Constructor -phương thức khởi tạo
Constructor là một phương thức đặc biệt được gọi tự động khi một đối tượng được tạo ra. Trong PHP, phương thức này được khai báo với tên __construct(). Bạn có thể sử dụng nó để thiết lập giá trị ban đầu cho các thuộc tính của đối tượng.
class Car {
public $color;
public $brand;
// Constructor
public function __construct($color, $brand) {
$this->color = $color;
$this->brand = $brand;
}
public function getCarInfo() {
return "This car is a " . $this->color . " " . $this->brand;
}
}
$myCar = new Car("Red", "Toyota");
echo $myCar->getCarInfo(); // Output: This car is a Red Toyota5. Destructor -phương thức hủy
Destructor là phương thức được gọi tự động khi một đối tượng không còn được sử dụng nữa hoặc khi kết thúc chương trình. Phương thức này có tên là __destruct() và có thể được sử dụng để giải phóng tài nguyên hoặc thực hiện các hành động dọn dẹp.
class Car {
public $color;
public function __construct($color) {
$this->color = $color;
}
// Destructor
public function __destruct() {
echo "Destroying the car object";
}
}
$myCar = new Car("Red");6. Từ khóa this
Trong các phương thức của một class, từ khóa this được sử dụng để tham chiếu đến đối tượng hiện tại. Nó cho phép truy cập các thuộc tính và phương thức của đối tượng từ bên trong chính class đó.
class Car {
public $color;
public function setColor($color) {
$this->color = $color;
}
public function getColor() {
return $this->color;
}
}
$myCar = new Car();
$myCar->setColor("Blue");
echo $myCar->getColor(); // Output: Blue7. Kết luận
Class và đối tượng là hai khái niệm cốt lõi trong lập trình hướng đối tượng (OOP) và rất quan trọng trong PHP. Bằng cách tổ chức mã của bạn thành các class và tạo các đối tượng từ những class này, bạn có thể viết mã dễ hiểu, tái sử dụng, và mở rộng hơn.
Trong bài tiếp theo, chúng ta sẽ đi sâu hơn vào các khái niệm khác của OOP như kế thừa, đa hình, và đóng gói, giúp bạn tận dụng sức mạnh của OOP trong PHP để xây dựng các ứng dụng phức tạp hơn.









