1. Lớp trong lập trình hướng đối tượng – class

Lớp – class là dùng để mô tả một phần hoặc toàn phần của của một đối tượng(nhưng nó không phải đối tượng). Ta có thể hiểu như là lớp chính là một mẫu mô tả trạng thái, hành động của đối tượng đó.

Cú pháp:

class Name
{
    //code
}

Name chính là tên của class, nó có ràng buộc về tên giống như đặt tên hàm trong hướng thủ tục.

Ví dụ: Khai báo một lớp sinh viên

class sinhvien
{
// Các khai báo bên trong
}

2. Thuộc tính của lớp

Thuộc tính – properties trong class có tác dụng như các biến và hằng trong phương thức lập trình hướng thủ tục. Đó chính là thuộc tính của lớp đó mô tả. Ví dụ như người có thuộc tính là mắt, mũi, tay, chân,…

Cú pháp:

class tenLop{
    var $tenthuoctinh;
}

Trong đó:

  • Để khai báo thuộc tính động thì ta sử dụng từ khóa var, và ta cũng có thể gán luôn giá trị cho biến.
  • Tên của thuộc tính cũng được rằng buộc như đặt tên hằng và biến.
  • Để khai báo thuộc tính cố định mà không thay đổi giá trị thì ta có thể dùng từ khóa const

Ví dụ: mình sẽ khai báo một lớp động vật và các thuộc tính của lớp đó

class DongVat
{
    var $mat;
    var $mui;
    var $tay;
    var $chan;
    const sochan = 2; // khai báo một hằng
}

3. Phương thức của lớp

Phương thức trong class chính là phương thức của đối tượng. Đó là các hành vi, hành động của class đó. Nó gần giống với hàm trong lập trình thủ tục. Chỉ khác là nó nằm trong một lớp đối tượng nên khi ta gọi đến nó thì phải thông qua lớp đối tượng này.

Cú pháp:

class Name
{
    function tenphuongthuc()
    {
        //code  
    }
}

Trong đó: tenphuongthuc chính là tên của phương thức trong class, và ràng buộc đặt tên của nó như đặt tên biến.

Ví dụ: Cùng với ví dụ phần trên mình sẽ khai báo những thuộc tính và phương thức của lớp động vật.

class DongVat
{
    // Các thuộc tính
    var $mat;
    var $mui;
    var $tay;
    var $chan;
  
    // Các phương thức
    function an($thuc_an)
    {
        // lệnh
    }
  
    function sua()
    {
        // lệnh
    }
  
    function chay()
    {
        // lệnh
    }
} 

4. Khởi tạo lớp

Khởi tạo lớp là việc mà ta sẽ tạo ra một thứ gì mới(khởi tạo một hình tượng mới) dựa theo lớp mà ta đã khai báo của đối tượng đó. Các bạn cần phân biệt rõ giữa việc khai báo đối tượng và khởi tạo đối tượng.

Cú pháp: $ten_bien = new ClassName();

Ví dụ:

// Khai báo Lớp (đối tượng) Động Vật
class DongVat
{
    // Các thuộc tính
    var $mat;
    var $mui;
    var $tay;
    var $chan;
  
    // Các phương thức
    function an($thuc_an)
    {
        // lệnh
    }
  
    function sua()
    {
        // lệnh
    }
  
    function chay()
    {
        // lệnh
    }
}
  
// Khởi tạo lớp động vật mới
$conlon = new DongVat();
$conbo = new DongVat();
$conga = new DongVat();

5. Truy xuất đến các thuôc tính của class

5.1. Truy xuất trong class

Để truy xuất các thuộc tính của đối tượng ta sẽ dùng toán tử -> để trỏ đến.

Và để truy xuất thuộc tính bên trong class thì ta kèm thêm từ khóa this. Cú pháp hoàn chỉnh là: $this->propertyName;

Ví dụ:

class ConNguoi
{
    var $name;
    var $mat;
    var $mui;
    const sochan = 2;

    function an()
    {
        //code
    }

    function noi($caunoi)
    {
        return $this->name = $caunoi;
    }

    function di()
    {
        //code
    }
}

5.2. Truy xuất bên ngoài class

Tương tự như truy xuất bên trong class ta cũng dùng toán tử -> để trỏ đến

Cú pháp:

$newClass->propertyName;

Hoặc: $newClass = new className();

Ví dụ:

class DongVat {
    var $hello = 'Xin chào các bạn, Tôi đang ăn nhé';
    // Các phương thức
  
    // hàm (hành động) ăn
    function an()
    {
        echo $this->hello;
    }
}
  
// Khởi tạo lớp động vật mới
$conheo = new DongVat();
  
// Gọi đến hàm ăn
// kết quả "Xin chào các bạn, Tôi đang ăn nhé"
$conheo->an();