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 classobject 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.

php
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.

php
$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 stopped

2. 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.

php
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.
php
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).

php
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.

php
$myCar = new Car();
$myCar->color = "Red";
echo $myCar->color; // Output: Red

$myCar->drive(); // Output: The car is driving

4. 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.

php
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 Toyota

5. 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.

php
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 đó.

php
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: Blue

7. Kết luận

Classđố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.