PHP - Lớp và Đối tượng
Chào mừng các bạn đang theo đuổi lập trình! Hôm nay, chúng ta sẽ khám phá thế giới thú vị của các lớp và đối tượng trong PHP. Đừng lo lắng nếu những thuật ngữ này听起来 có vẻ rắc rối - đến cuối bài học này, bạn sẽ có thể tạo ra các lớp và đối tượng của riêng mình như một chuyên gia!
Lớp và Đối tượng là gì?
Trước khi chúng ta nhảy vào mã nguồn, hãy hiểu rõ lớp và đối tượng là gì. Hãy tưởng tượng bạn đang xây dựng một ngôi nhà. Lớp sẽ giống như bản vẽ của ngôi nhà, trong khi đối tượng sẽ là ngôi nhà thực tế được xây dựng từ bản vẽ đó. Bạn có thể tạo ra nhiều ngôi nhà (đối tượng) từ một bản vẽ (lớp).
Định nghĩa một Lớp trong PHP
Hãy bắt đầu bằng cách tạo lớp PHP đầu tiên của chúng ta. Chúng ta sẽ tạo một lớp đơn giản叫做 Car
.
<?php
class Car {
// Thuộc tính của lớp
public $brand;
public $color;
// Phương thức của lớp
public function startEngine() {
return "Vroom! The $this->color $this->brand is starting.";
}
}
?>
Hãy phân tích này:
- Chúng ta bắt đầu với từ khóa
class
, tiếp theo là tên của lớp của chúng ta (trong trường hợp này làCar
). - Trong lớp, chúng ta định nghĩa các thuộc tính (biến) như
$brand
và$color
. - Chúng ta cũng định nghĩa một phương thức (hàm) gọi là
startEngine()
.
Tạo Đối tượng từ một Lớp
Bây giờ chúng ta đã có lớp Car
, hãy tạo một số đối tượng xe!
<?php
// Tạo các đối tượng xe
$myCar = new Car();
$myCar->brand = "Toyota";
$myCar->color = "Red";
$friendsCar = new Car();
$friendsCar->brand = "Honda";
$friendsCar->color = "Blue";
// Sử dụng phương thức của đối tượng
echo $myCar->startEngine();
echo $friendsCar->startEngine();
?>
Kết quả:
Vroom! The Red Toyota is starting.
Vroom! The Blue Honda is starting.
Đây là những gì đang xảy ra:
- Chúng ta sử dụng từ khóa
new
để tạo đối tượng từ lớpCar
. - Chúng ta đặt các thuộc tính của mỗi đối tượng bằng cách sử dụng toán tử mũi tên (
->
). - Chúng ta gọi phương thức
startEngine()
trên mỗi đối tượng.
Phương thức Constructor
Bây giờ, hãy làm cho lớp của chúng ta phức tạp hơn một chút bằng cách thêm một constructor. Constructor là một phương thức đặc biệt được gọi khi một đối tượng được tạo ra.
<?php
class Car {
public $brand;
public $color;
// Constructor
public function __construct($brand, $color) {
$this->brand = $brand;
$this->color = $color;
}
public function startEngine() {
return "Vroom! The $this->color $this->brand is starting.";
}
}
// Tạo các đối tượng xe với constructor
$myCar = new Car("Toyota", "Red");
$friendsCar = new Car("Honda", "Blue");
echo $myCar->startEngine();
echo $friendsCar->startEngine();
?>
Constructor cho phép chúng ta đặt brand
và color
khi chúng ta tạo đối tượng, làm cho mã của chúng ta sạch sẽ và hiệu quả hơn.
Kế thừa
Một trong những tính năng mạnh mẽ của OOP là kế thừa. Nó cho phép chúng ta tạo một lớp mới dựa trên một lớp hiện có. Hãy tạo một lớp ElectricCar
kế thừa từ lớp Car
của chúng ta.
<?php
class ElectricCar extends Car {
public $batteryLife;
public function __construct($brand, $color, $batteryLife) {
parent::__construct($brand, $color);
$this->batteryLife = $batteryLife;
}
public function chargeBattery() {
return "The $this->color $this->brand is charging. Current battery life: $this->batteryLife%";
}
}
$teslaModel3 = new ElectricCar("Tesla", "White", 80);
echo $teslaModel3->startEngine();
echo $teslaModel3->chargeBattery();
?>
Kết quả:
Vroom! The White Tesla is starting.
The White Tesla is charging. Current battery life: 80%
Ở đây, ElectricCar
kế thừa tất cả các thuộc tính và phương thức của Car
, và thêm thuộc tính ($batteryLife
) và phương thức (chargeBattery()
) của riêng mình.
các Modifier Truy cập
Trong OOP, chúng ta có thể kiểm soát khả năng hiển thị của các thuộc tính và phương thức bằng cách sử dụng các modifier truy cập. Có ba loại:
Modifier | Mô tả |
---|---|
public | Có thể truy cập từ bất kỳ đâu |
protected | Có thể truy cập trong lớp và các lớp con |
private | Chỉ có thể truy cập trong lớp |
Hãy修改我们的 Car
lớp để sử dụng những điều này:
<?php
class Car {
protected $brand;
private $engineStarted = false;
public function __construct($brand) {
$this->brand = $brand;
}
public function startEngine() {
$this->engineStarted = true;
return "The $this->brand's engine is now running.";
}
public function isEngineRunning() {
return $this->engineStarted;
}
}
$myCar = new Car("Toyota");
echo $myCar->startEngine();
echo $myCar->isEngineRunning() ? "Engine is running" : "Engine is off";
// This would cause an error: echo $myCar->engineStarted;
?>
Bây giờ, $brand
là protected (có thể truy cập trong các lớp con), $engineStarted
là private (chỉ có thể truy cập trong lớp Car
), và các phương thức của chúng ta vẫn là public.
Kết luận
Chúc mừng! Bạn đã chính thức bước vào thế giới Lập trình Hướng đối tượng với PHP. Chúng ta đã bao gồm các lớp, đối tượng, constructor, kế thừa và modifier truy cập. Những khái niệm này tạo nền tảng cho OOP và sẽ phục vụ bạn tốt trong hành trình lập trình của bạn.
Nhớ rằng, thực hành là cách tốt nhất để thành thạo. Hãy thử tạo ra các lớp của riêng bạn, thử nghiệm với các thuộc tính và phương thức khác nhau, và đừng sợ mắc lỗi - đó là cách chúng ta học hỏi! Chúc các bạn lập trình vui vẻ!
Credits: Image by storyset