Lập trình Hướng đối tượng trong PHP

Các Khái niệm Hướng đối tượng

Lập trình hướng đối tượng (OOP) là một范式 lập trình sử dụng "đối tượng" để thiết kế các ứng dụng và phần mềm. Những đối tượng này là các thể hiện của các lớp, có thể chứa dữ liệu dưới dạng các trường, còn được gọi là các thuộc tính; và mã, dưới dạng các thủ tục, còn được gọi là các phương thức. Các nguyên tắc chính của OOP bao gồm đóng gói, kế thừa và đa hình.

PHP - Object Oriented Programming

Định nghĩa Các Lớp PHP

Trong PHP, bạn định nghĩa một lớp bằng cách sử dụng từ khóa class. Một lớp là một bản đồ cho tạo ra các đối tượng. Nó định nghĩa một tập hợp các thuộc tính và phương thức chung cho tất cả các đối tượng của một loại.

class Car {
// Các thuộc tính và phương thức của lớp ở đây
}

Tạo Các Đối tượng trong PHP

Để tạo một đối tượng từ một lớp, bạn sử dụng từ khóa new theo sau là tên lớp.

$myCar = new Car();

Gọi Các Phương thức Thành viên

Các phương thức thành viên được định nghĩa bên trong một lớp và được sử dụng để thực hiện các thao tác trên các thuộc tính của đối tượng. Bạn gọi một phương thức thành viên trên một đối tượng bằng cách sử dụng toán tử đối tượng ->.

$myCar->drive(); // Gọi phương thức drive trên đối tượng $myCar

Các Phương thức Khởi tạo

Một phương thức khởi tạo 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 từ một lớp. Nó được sử dụng để khởi tạo các thuộc tính của đối tượng.

class Car {
public function __construct() {
// Khởi tạo các thuộc tính ở đây
}
}

Destructor

Một destructor là một phương thức đặc biệt được gọi tự động khi một đối tượng bị huỷ hoặc ra khỏi phạm vi. Nó được sử dụng để thực hiện các nhiệm vụ dọn dẹp như đóng kết nối cơ sở dữ liệu hoặc giải phóng bộ nhớ.

class Car {
public function __destruct() {
// Các nhiệm vụ dọn dẹp ở đây
}
}

Kế thừa

Kế thừa cho phép một lớp kế thừa các thuộc tính và phương thức từ một lớp khác. Lớp được kế thừa từ được gọi là lớp cha, và lớp kế thừa được gọi là lớp con.

class ElectricCar extends Car {
// ElectricCar kế thừa các thuộc tính và phương thức từ Car
}

Ghi đè Phương thức

Ghi đè phương thức cho phép một lớp con cung cấp một thực thi khác của một phương thức đã được định nghĩa trong lớp cha của nó.

class ElectricCar extends Car {
public function drive() {
// Thực thi khác của phương thức drive
}
}

Các Thành viên Công khai

Các thành viên công khai có thể truy cập từ bất kỳ đâu, cả bên trong và bên ngoài lớp.

class Car {
public $color; // Thuộc tính công khai
public function drive() { // Phương thức công khai
// Mã ở đây
}
}

Các Thành viên Riêng tư

Các thành viên riêng tư chỉ có thể truy cập trong lớp chúng được định nghĩa. Chúng không thể được truy cập từ bên ngoài lớp.

class Car {
private $color; // Thuộc tính riêng tư
private function drive() { // Phương thức riêng tư
// Mã ở đây
}
}

Các Thành viên Bảo vệ

Các thành viên bảo vệ có thể truy cập trong lớp chúng được định nghĩa và trong bất kỳ lớp con nào.

class Car {
protected $color; // Thuộc tính bảo vệ
protected function drive() { // Phương thức bảo vệ
// Mã ở đây
}
}

Giao diện

Một giao diện là một hợp đồng định nghĩa một tập hợp các phương thức mà một lớp phải thực hiện. Nếu một lớp thực hiện một giao diện, nó cam kết cung cấp một thực thi cho tất cả các phương thức được声明 trong giao diện.

interface Drivable {
public function drive(); // Khai báo phương thức
}

class Car implements Drivable {
public function drive() {
// Thực thi phương thức drive
}
}

CácBien Konstant

Các biến konstant là các giá trị có tên không thể thay đổi một khi đã được định nghĩa. Chúng rất hữu ích cho việc định nghĩa các giá trị không nên thay đổi trong suốt quá trình thực thi của chương trình.

class Car {
const MAX_SPEED = 100; // Giá trị konstant
}

Các Lớp Trừu tượng

Một lớp trừu tượng là một lớp không thể được khởi tạo và được thiết kế để được mở rộng bởi các lớp khác. Nó có thể chứa các phương thức trừu tượng, là các phương thức không có thực thi, và các phương thức cụ thể với thực thi.

abstract class Vehicle {
abstract public function move(); // Phương thức trừu tượng
public function stop() { // Phương thức cụ thể
// Mã ở đây
}
}

Từ khóa Static

Từ khóa static được sử dụng để khai báo các thuộc tính hoặc phương thức thuộc về lớp thay vì một thể hiện của lớp. Các thành viên tĩnh có thể được truy cập mà không cần tạo một đối tượng của lớp.

class Car {
public static $count = 0; // Thuộc tính tĩnh
public static function getCount() { // Phương thức tĩnh
return self::$count;
}
}

Từ khóa Final

Từ khóa final được sử dụng để ngăn cản một lớp không thể được mở rộng, hoặc một phương thức không thể bị ghi đè.

final class Car {
// Lớp này không thể được mở rộng
}

Gọi Các Khởi tạo Cha

Khi tạo một lớp con, bạn có thể muốn gọi khởi tạo của lớp cha để khởi tạo một số thuộc tính của nó. Bạn có thể làm điều này bằng cách sử dụng từ khóa parent theo sau là toán tử :: và tên khởi tạo.


class ElectricCar extends Car {
public function __construct() {
parent::__construct(); // Gọi khởi tạo của lớp cha
// Các khởi tạo bổ sung ở đây
}
}

Credits: Image by storyset