Các đối tượng khác nhau trong PHP là gì?

Chúng ta sẽ bắt đầu với phần giới thiệu về lớp và đối tượng, đồng thời thảo luận về một số khái niệm nâng cao như tính kế thừa và tính đa hình trong nửa sau của bài viết này

Lập trình hướng đối tượng (OOP) là gì?

Lập trình hướng đối tượng, thường được gọi là OOP, là một cách tiếp cận giúp bạn phát triển các ứng dụng phức tạp theo cách dễ bảo trì và mở rộng trong thời gian dài. Trong thế giới của OOP (để tạo đối tượng trong PHP), các thực thể trong thế giới thực như

class Employee
52,
class Employee
53 hoặc 
class Employee
54 được coi là đối tượng. Trong lập trình hướng đối tượng, bạn tương tác với ứng dụng của mình bằng cách sử dụng các đối tượng. Điều này trái ngược với lập trình thủ tục, nơi bạn chủ yếu tương tác với các hàm và biến toàn cục

Trong OOP, có một khái niệm về "lớp", được sử dụng để lập mô hình hoặc ánh xạ một thực thể trong thế giới thực tới một mẫu dữ liệu (thuộc tính) và chức năng (phương thức). Một "đối tượng" là một thể hiện của một lớp và bạn có thể tạo nhiều thể hiện của cùng một lớp. Ví dụ, có một lớp duy nhất

class Employee
52, nhưng nhiều đối tượng người có thể là thể hiện của lớp này—
class Employee
56,
class Employee
57,
class Employee
58, v.v.  

Lớp định nghĩa các thuộc tính. Ví dụ: đối với lớp Người, chúng ta có thể có 

class Employee
59, 
class Employee
60, và 
class Employee
61. Sau đó, mỗi đối tượng người sẽ có các giá trị riêng cho các thuộc tính đó.  

Bạn cũng có thể định nghĩa các phương thức trong lớp cho phép bạn thao tác các giá trị của thuộc tính đối tượng và thực hiện các thao tác trên đối tượng. Ví dụ, bạn có thể định nghĩa một phương thức

class Employee
62 để lưu thông tin đối tượng vào cơ sở dữ liệu

Hãy tiếp tục tìm hiểu cách tạo các đối tượng trong PHP

Lớp PHP là gì?

Đầu tiên chúng ta cần hiểu các lớp PHP là gì. Một lớp là một khuôn mẫu đại diện cho một thực thể trong thế giới thực và nó định nghĩa các thuộc tính và phương thức của thực thể đó. Trong phần này, chúng ta sẽ thảo luận về giải phẫu cơ bản của một lớp PHP điển hình

Cách tốt nhất để hiểu các khái niệm mới là với một ví dụ. Vì vậy, hãy xem lớp

class Employee
63 trong đoạn mã sau, đại diện cho thực thể nhân viên

1

2
class Employee
3
{
4
  private $first_name;
5
  private $last_name;

0

1

2

3

4

5

6

7

8

9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9

7
class Employee
1
class Employee
2
class Employee
3
2
5
class Employee
5
class Employee
6
class Employee
7
class Employee
8

7
3
0
3
1
3
2
2
5
3
4
3
5
3
6
3
7

7
3
9
{
0
{
1
2
5
{
3
{
4
{
5________17

Câu lệnh

class Employee
64 ở dòng đầu tiên xác định lớp
class Employee
63. Sau đó, chúng ta tiếp tục khai báo các thuộc tính, hàm tạo và các phương thức khác của lớp

Thuộc tính lớp trong PHP

Bạn có thể coi các thuộc tính của lớp như các biến được sử dụng để chứa thông tin về đối tượng. Trong ví dụ trên, chúng tôi đã xác định ba thuộc tính—_______0_______66,

class Employee
67 và
class Employee
60. Trong hầu hết các trường hợp, các thuộc tính của lớp được truy cập thông qua các đối tượng được khởi tạo

Các thuộc tính này là

class Employee
69, có nghĩa là chúng chỉ có thể được truy cập từ bên trong lớp trong PHP. Đây là cấp độ truy cập an toàn nhất cho tài sản. Chúng ta sẽ thảo luận về các mức truy cập khác nhau đối với các thuộc tính và phương thức của lớp trong PHP ở phần sau của bài viết này

Trình xây dựng cho các lớp PHP

Hàm tạo là một phương thức lớp đặc biệt được gọi tự động khi bạn khởi tạo một đối tượng. Chúng ta sẽ xem cách khởi tạo các đối tượng trong vài phần tiếp theo, nhưng bây giờ bạn chỉ cần biết rằng hàm tạo được sử dụng để khởi tạo các thuộc tính của đối tượng khi đối tượng được tạo

Bạn có thể xác định hàm tạo bằng cách xác định phương thức

class Employee
70

Các phương thức cho các lớp PHP

Chúng ta có thể coi các phương thức lớp trong PHP là các hàm thực hiện các hành động cụ thể được liên kết với các đối tượng. Trong hầu hết các trường hợp, chúng được sử dụng để truy cập và thao tác các thuộc tính của đối tượng và thực hiện các thao tác liên quan

Trong ví dụ trên, chúng ta đã định nghĩa phương thức

class Employee
71, phương thức này trả về họ được liên kết với đối tượng.  

Vì vậy, đó là phần giới thiệu ngắn gọn về cấu trúc lớp trong PHP. Trong phần tiếp theo, chúng ta sẽ xem cách khởi tạo các đối tượng của lớp

class Employee
63

Đối tượng trong PHP là gì?

Trong phần trước, chúng ta đã thảo luận về cấu trúc cơ bản của một lớp trong PHP. Bây giờ, khi bạn muốn sử dụng một lớp, bạn cần khởi tạo nó và kết quả cuối cùng là một đối tượng. Vì vậy, chúng ta có thể nghĩ về một lớp như một bản thiết kế và một đối tượng là một thứ thực tế mà bạn có thể làm việc với

Trong ngữ cảnh của lớp

class Employee
63 mà chúng ta vừa tạo ở phần trước, hãy xem cách khởi tạo một đối tượng của lớp đó

1

2
4
0_______16_______
4
4
3
5
18_______5

0
4
7

2
{
6

Bạn cần sử dụng từ khóa

class Employee
74 khi muốn khởi tạo một đối tượng của bất kỳ lớp nào cùng với tên lớp của nó, và bạn sẽ nhận được một thể hiện đối tượng mới của lớp đó

Nếu một lớp đã định nghĩa phương thức

class Employee
70 và nó yêu cầu các đối số, thì bạn cần truyền các đối số đó khi khởi tạo một đối tượng. Trong trường hợp của chúng ta, phương thức khởi tạo của lớp
class Employee
63 yêu cầu ba đối số, và do đó chúng ta đã chuyển những đối số này khi chúng ta tạo đối tượng
class Employee
77. Như chúng ta đã thảo luận trước đó, phương thức
class Employee
70 được gọi tự động khi đối tượng được khởi tạo

Tiếp theo, chúng ta đã gọi các phương thức lớp trên đối tượng

class Employee
77 để in thông tin được khởi tạo trong quá trình tạo đối tượng. Tất nhiên, bạn có thể tạo nhiều đối tượng của cùng một lớp, như trong đoạn mã sau

1

2
  private $first_name;
3_______16__________
4
  private $first_name;
6
5
___
  private $first_name;
8

0
5
0

2

4
5
3

6

8
5
6
2
0_______20_______8_______14_______2_______ 21_______4

Hình ảnh sau đây là biểu diễn đồ họa của lớp Nhân viên và một số thể hiện của nó

Các đối tượng khác nhau trong PHP là gì?
Các đối tượng khác nhau trong PHP là gì?
Các đối tượng khác nhau trong PHP là gì?

Nói một cách đơn giản, một lớp là một bản thiết kế mà bạn có thể sử dụng để tạo các đối tượng có cấu trúc

đóng gói

Trong phần trước, chúng ta đã thảo luận về cách khởi tạo các đối tượng của lớp

class Employee
63. Thật thú vị khi lưu ý rằng bản thân đối tượng
class Employee
77 bao bọc các thuộc tính và phương thức của lớp. Nói cách khác, nó ẩn những chi tiết đó khỏi phần còn lại của chương trình. Trong thế giới của OOP, điều này được gọi là đóng gói dữ liệu

Đóng gói là một khía cạnh quan trọng của OOP cho phép bạn hạn chế quyền truy cập vào các thuộc tính hoặc phương thức nhất định của đối tượng. Và điều đó đưa chúng ta đến một chủ đề khác để thảo luận. cấp độ truy cập

Cấp truy cập

Khi bạn định nghĩa một thuộc tính hoặc một phương thức trong một lớp, bạn có thể khai báo nó có một trong ba mức truy cập sau—

class Employee
82,
class Employee
69 hoặc
class Employee
84

Truy cập công cộng

Khi bạn khai báo một thuộc tính hoặc một phương thức là công khai, nó có thể được truy cập từ bất kỳ đâu bên ngoài lớp. Giá trị của thuộc tính công cộng có thể được sửa đổi từ bất kỳ đâu trong mã của bạn

Hãy xem một ví dụ để hiểu cấp truy cập công khai

1

2
  private $last_name;
6
3
{
4

00
5

0

03

2

7

4

07

6
2
5

8
{
4
2
0
2
2

14
2
4

16
2
6

18
2
7
{
6

Như bạn có thể thấy trong ví dụ trên, chúng ta đã khai báo thuộc tính

class Employee
59 là public. Do đó, bạn có thể đặt nó từ bất kỳ đâu bên ngoài lớp, như chúng ta đã làm ở đây

truy cập cá nhân

Khi bạn khai báo một thuộc tính hoặc một phương thức là

class Employee
69, nó chỉ có thể được truy cập từ bên trong lớp. Điều này có nghĩa là bạn cần xác định các phương thức getter và setter để lấy và đặt giá trị của thuộc tính đó

Một lần nữa, hãy xem lại ví dụ trước để hiểu cấp độ truy cập riêng tư

1

2
  private $last_name;
6
3
{
4

28
5

0

03

2

7

4

07

6
2
5

8
2
0

40
2
2

7
2
4

44
2
6
2
5
2
7
{
4
2
9
class Employee
1

14
class Employee
3

53
class Employee
5

55
class Employee
6

18
class Employee
8
{
6

Nếu bạn thử truy cập một thuộc tính riêng tư từ bên ngoài lớp, nó sẽ gây ra lỗi nghiêm trọng

class Employee
87. Vì vậy, bạn cần đặt giá trị của thuộc tính riêng bằng phương thức setter, giống như chúng ta đã làm bằng cách sử dụng phương thức 
class Employee
88

Có những lý do chính đáng khiến bạn có thể muốn đặt một tài sản ở chế độ riêng tư. Ví dụ: có lẽ nên thực hiện một số hành động (cập nhật cơ sở dữ liệu, hoặc kết xuất lại một mẫu) nếu thuộc tính đó thay đổi. Trong trường hợp đó, bạn có thể định nghĩa một phương thức setter và xử lý bất kỳ logic đặc biệt nào khi thuộc tính bị thay đổi

Truy cập được bảo vệ

Cuối cùng, khi bạn khai báo một thuộc tính hoặc một phương thức là

class Employee
84, nó có thể được truy cập bởi cùng một lớp đã định nghĩa nó và các lớp kế thừa lớp đó. Chúng ta sẽ thảo luận về tính kế thừa trong phần tiếp theo, vì vậy chúng ta sẽ quay lại mức truy cập được bảo vệ sau

Di sản

Kế thừa là một khía cạnh quan trọng của mô hình lập trình hướng đối tượng, cho phép bạn kế thừa các thuộc tính và phương thức của các lớp khác bằng cách mở rộng chúng. Lớp được kế thừa gọi là lớp cha, lớp kế thừa lớp kia gọi là lớp con. Khi bạn khởi tạo một đối tượng của lớp con, nó cũng sẽ kế thừa các thuộc tính và phương thức của lớp cha

Hãy xem ảnh chụp màn hình sau đây để hiểu khái niệm thừa kế

Các đối tượng khác nhau trong PHP là gì?
Các đối tượng khác nhau trong PHP là gì?
Các đối tượng khác nhau trong PHP là gì?

Trong ví dụ trên, lớp

class Employee
52 là lớp cha và lớp
class Employee
63 mở rộng hoặc kế thừa lớp Person và do đó được gọi là lớp con

Hãy thử xem qua một ví dụ thực tế để hiểu cách thức hoạt động của nó

1

2
  private $last_name;
6
3
{
4

67
5

69

0

2

03

4

7

6

07

8
2
5
2
0
2
2

40
2
4

7
2
6

44
2
7
2
5
2
9
class Employee
1

90
class Employee
3

7
class Employee
5

94
class Employee
6
2
5
class Employee
8
3
0

99
3
2

7
3
4

94
3
5
2
5
3
7
{
4
3
9
{
1
2
10
{
3
{
{
5
2
14________14_

Điều quan trọng cần lưu ý ở đây là lớp

class Employee
63 đã sử dụng từ khóa
class Employee
93 để kế thừa lớp
class Employee
52. Bây giờ, lớp
class Employee
63 có thể truy cập tất cả các thuộc tính và phương thức của lớp
class Employee
52 được khai báo là public hoặc protected. (Không thể truy cập các thành viên được khai báo là riêng tư. )

Trong ví dụ trên, đối tượng

class Employee
97 có thể truy cập các phương thức
class Employee
98 và
class Employee
88 được định nghĩa trong lớp
class Employee
52 vì chúng được khai báo là public

Tiếp theo, chúng ta đã truy cập phương thức

3
01 bằng cách sử dụng phương thức
3
02 được định nghĩa trong lớp
class Employee
63, vì nó được khai báo là được bảo vệ. Cuối cùng, đối tượng
class Employee
97 không thể truy cập phương thức
3
05 của lớp
class Employee
52 vì nó được khai báo là riêng tư

Mặt khác, bạn có thể sử dụng đối tượng

class Employee
97 để thiết lập thuộc tính
class Employee
60 của lớp
class Employee
52, như chúng ta đã làm trong phương thức
3
10 được định nghĩa trong lớp
class Employee
63, vì thuộc tính
class Employee
60 được khai báo là được bảo vệ

Vì vậy, đó là một giới thiệu ngắn gọn về thừa kế. Nó giúp bạn giảm trùng lặp mã và do đó khuyến khích khả năng sử dụng lại mã

đa hình

Đa hình là một khái niệm quan trọng khác trong thế giới lập trình hướng đối tượng, đề cập đến khả năng xử lý các đối tượng khác nhau dựa trên kiểu dữ liệu của chúng

Ví dụ, trong ngữ cảnh thừa kế, nếu lớp con muốn thay đổi hành vi của phương thức của lớp cha, nó có thể ghi đè phương thức đó. Điều này được gọi là ghi đè phương thức. Hãy xem nhanh một ví dụ thực tế để hiểu khái niệm ghi đè phương thức

1

2
class Employee
12
3
{
4
class Employee
16
5

7

0
class Employee
20

2
2
5

4
{
4

6

8
class Employee
27
2
0
{
2
2
class Employee
16
2
4

7
2
6
class Employee
35
2
7
2
5
2
9
{
4
class Employee
1
class Employee
3
class Employee
42
class Employee
5
class Employee
44
class Employee
6
class Employee
8
class Employee
47
3
0
class Employee
49
3
2
{
6

Như bạn có thể thấy, chúng ta đã thay đổi hành vi của phương thức

3
13 bằng cách ghi đè nó trong lớp
3
14. Điều quan trọng là một thông báo được định dạng khác nhau dựa trên loại đối tượng, cho dù đó là một thể hiện của lớp cha hay lớp con

Ghi chú. Một số ngôn ngữ hướng đối tượng cũng có một loại nạp chồng phương thức cho phép bạn định nghĩa nhiều phương thức lớp có cùng tên nhưng khác số lượng đối số. Điều này không được hỗ trợ trực tiếp trong PHP, nhưng có một vài cách giải quyết để đạt được chức năng tương tự

Phần kết luận

Bây giờ bạn đã biết những kiến ​​thức cơ bản về lập trình hướng đối tượng sử dụng các lớp PHP. Lập trình hướng đối tượng là một khía cạnh quan trọng trong phát triển ứng dụng, bất kể bạn đang làm việc với công nghệ nào. Hôm nay, trong bối cảnh PHP, chúng ta đã thảo luận về một số khái niệm cơ bản về OOP và chúng tôi cũng nhân cơ hội này giới thiệu một số ví dụ thực tế

Các đối tượng trong PHP là gì?

Đối tượng là một thể hiện riêng lẻ của cấu trúc dữ liệu được định nghĩa bởi một lớp . Chúng tôi định nghĩa một lớp một lần và sau đó tạo nhiều đối tượng thuộc về nó. Các đối tượng còn được gọi là thể hiện.

Loại đối tượng trong PHP là gì?

Trong PHP, Đối tượng là một kiểu dữ liệu ghép (cùng với mảng). Giá trị của nhiều loại có thể được lưu trữ cùng nhau trong một biến duy nhất. Đối tượng là một thể hiện của lớp dựng sẵn hoặc do người dùng định nghĩa. Ngoài các thuộc tính, lớp xác định chức năng liên quan đến dữ liệu.

Các đối tượng PHP giải thích bằng ví dụ là gì?

Các đối tượng được định nghĩa từ các lớp trong Lập trình hướng đối tượng như PHP . Khi một lớp được định nghĩa, chúng ta có thể tạo ra nhiều đối tượng bên ngoài lớp. Ví dụ Class Car được định nghĩa thì Mercedes, BMW, Skoda đều là đối tượng của Class Car. Một lớp là một bản thiết kế của một đối tượng.

Bạn có thể tạo bao nhiêu đối tượng trong PHP?

Không có giới hạn (thực tế phù hợp) cho số lượng đối tượng . Miễn là có đủ RAM vật lý, bạn luôn có thể tăng giới hạn bộ nhớ. Tuy nhiên, từ quan điểm kiến ​​trúc, có thể rất không khôn ngoan nếu giữ tất cả những thứ này trong RAM trong toàn bộ thời gian thực thi, khi nó thực sự không cần thiết.