Lập trình hướng đối tượng là một mô hình lập trình được tổ chức xung quanh Đối tượng hơn là các hành động và dữ liệu hơn là logic
Tầng lớp
Một lớp là một thực thể xác định cách một đối tượng sẽ hành xử và đối tượng sẽ chứa những gì. Nói cách khác, đó là một kế hoạch chi tiết hoặc một bộ hướng dẫn để xây dựng một loại đối tượng cụ thể
Trong PHP, khai báo một lớp bằng từ khóa lớp, theo sau là tên của lớp và một bộ dấu ngoặc nhọn [{}]
Đây là bản thiết kế của công trình xây dựng mang tính đẳng cấp, những ngôi nhà và căn hộ được thực hiện bởi bản thiết kế này là những đối tượng
Cú pháp để tạo lớp trong PHP
Lưu ý quan trọng
Trong PHP, để xem nội dung của lớp, hãy sử dụng var_dump[]. Hàm var_dump[] được sử dụng để hiển thị thông tin có cấu trúc [loại và giá trị] về một hoặc nhiều biến
cú pháp
Mục tiêu
Một lớp định nghĩa một thể hiện riêng lẻ của cấu trúc dữ liệu. 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à một thể hiện
số 8. 1. 0 Đã thêm. Hỗ trợ công cụ sửa đổi cuối cùng cho hằng số lớp. Ngoài ra, các hằng số giao diện trở nên có thể ghi đè theo mặc định. số 8. 0. 0 Đã thêm. Hỗ trợ toán tử nullsafe ?-> để truy cập các thuộc tính và phương thức trên các đối tượng có thể là null. 7. 4. 0 Đã thay đổi. Bây giờ có thể ném ngoại lệ trong __toString[]. 7. 4. 0 Đã thêm. Hỗ trợ cho hiệp phương sai loại trả về hạn chế và chống lại loại đối số. Hỗ trợ phương sai đầy đủ chỉ khả dụng nếu sử dụng tự động tải. Bên trong một tệp duy nhất chỉ có thể tham chiếu loại không tuần hoàn. 7. 4. 0 Đã thêm. Bây giờ có thể gõ thuộc tính lớp. 7. 3. 0 Không tương thích. Giải nén đối số của Traversables bằng các phím không phải int không còn được hỗ trợ. Hành vi này không có ý định và do đó đã bị xóa. 7. 3. 0 Không tương thích. Trong các phiên bản trước, có thể tách các thuộc tính tĩnh bằng cách gán một tham chiếu. Điều này đã được gỡ bỏ. 7. 3. 0 Đã thay đổi. Toán tử instanceof hiện cho phép các ký tự là toán hạng đầu tiên, trong trường hợp đó, kết quả luôn làfalse
. 7. 2. 0 không dùng nữa. Phương thức __autoload[] không được dùng nữa thay cho phương thức spl_autoload_register[]. 7. 2. 0 Đã thay đổi. Không thể sử dụng tên sau để đặt tên cho các lớp, giao diện hoặc đặc điểm. object
. 7. 2. 0 Đã thay đổi. Bây giờ có thể thêm dấu phẩy vào cú pháp sử dụng nhóm cho các không gian tên. 7. 2. 0 Đã thay đổi. Mở rộng loại thông số. Các loại tham số từ các phương thức bị ghi đè và từ việc triển khai giao diện hiện có thể bị bỏ qua. 7. 2. 0 Đã thay đổi. Các phương thức trừu tượng hiện có thể bị ghi đè khi một lớp trừu tượng mở rộng một lớp trừu tượng khác. 7. 1. 0 Đã thay đổi. Các tên sau đây không thể được sử dụng để đặt tên cho các lớp, giao diện hoặc đặc điểm. void
và iterable
. 7. 1. 0 Đã thêm. Bây giờ có thể chỉ định khả năng hiển thị của các hằng số lớp. 7. 0. 0 không dùng nữa. Các cuộc gọi tĩnh đến các phương thức không được khai báo tĩnh. 7. 0. 0 không dùng nữa. Hàm tạo kiểu PHP 4. Tôi. e. các phương thức có cùng tên với lớp mà chúng được định nghĩa trong. 7. 0. 0 Đã thêm. Tuyên bố sử dụng nhóm. các lớp, hàm và hằng được nhập từ cùng một không gian tên giờ đây có thể được nhóm lại với nhau trong một câu lệnh sử dụng duy nhất. 7. 0. 0 Đã thêm. Hỗ trợ cho các lớp ẩn danh đã được thêm vào thông qua new class
. 7. 0. 0 Không tương thích. Việc lặp qua một đối tượng không thể Traversable giờ đây sẽ có hành vi giống như việc lặp qua các mảng tham chiếu phụ. 7. 0. 0 Đã thay đổi. Xác định các thuộc tính [tương thích] trong hai đặc điểm được sử dụng không còn gây ra lỗi. 5. 6. 0 Đã thêm. Phương thức __debugInfo[]. 5. 5. 0 Đã thêm. Các. hằng số ma thuật lớp. 5. 5. 0 Đã thêm. cuối cùng để xử lý các trường hợp ngoại lệ. 5. 4. 0 Đã thêm. đặc điểm. 5. 4. 0 Đã thay đổi. Nếu một lớp trừu tượng định nghĩa một chữ ký cho hàm tạo thì bây giờ nó sẽ được thực thi. 5. 3. 3 đã thay đổi. Các phương thức có cùng tên với phần tử cuối cùng của tên lớp được đặt tên sẽ không còn được coi là hàm tạo. Thay đổi này không ảnh hưởng đến các lớp không được đặt tên. 5. 3. 0 Đã thay đổi. Các lớp triển khai giao diện với các phương thức có giá trị mặc định trong nguyên mẫu không còn bắt buộc phải khớp với giá trị mặc định của giao diện. 5. 3. 0 Đã thay đổi. Bây giờ có thể tham chiếu lớp bằng cách sử dụng một biến [e. g. , echo $classname::constant;
]. Giá trị của biến không thể là một từ khóa [e. g. , self
, parent
hoặc static
]. 5. 3. 0 Đã thay đổi. Một lỗi cấp độ E_WARNING
được đưa ra nếu các phương thức quá tải ma thuật được khai báo là tĩnh. Nó cũng thực thi yêu cầu hiển thị công khai. 5. 3. 0 Đã thay đổi. Trước 5. 3. 0, các ngoại lệ được ném vào hàm __autoload[] không thể bắt được trong khối bắt và sẽ dẫn đến lỗi nghiêm trọng. Các ngoại lệ hiện được ném vào hàm __autoload có thể được bắt trong khối catch, với một điều khoản. Nếu ném một ngoại lệ tùy chỉnh, thì phải có sẵn lớp ngoại lệ tùy chỉnh. Hàm __autoload có thể được sử dụng đệ quy để tự động tải lớp ngoại lệ tùy chỉnh. 5. 3. 0 Đã thêm. Phương thức __callStatic. 5. 3. 0 Đã thêm. hỗ trợ heredoc và nowdoc cho các định nghĩa thuộc tính và const của lớp. Ghi chú. các giá trị heredoc phải tuân theo các quy tắc giống như các chuỗi trích dẫn kép, [e. g. không có biến bên trong]. 5. 3. 0 Đã thêm. Ràng buộc tĩnh muộn. 5. 3. 0 Đã thêm. Phương thức __invoke[]. 5. 2. 0 Đã thay đổi. Phương thức __toString[] chỉ được gọi khi nó được kết hợp trực tiếp với echo hoặc print. Nhưng bây giờ, nó được gọi trong bất kỳ bối cảnh chuỗi nào [e. g. trong printf[] với công cụ sửa đổi object
0] nhưng không phải trong các ngữ cảnh loại khác [e. g. với công cụ sửa đổi object
1]. Kể từ PHP 5. 2. 0, việc chuyển đổi các đối tượng không có phương thức __toString thành chuỗi sẽ phát ra lỗi cấp độ object
2. 5. 1. 3 đã thay đổi. Trong các phiên bản trước của PHP 5, việc sử dụng object
3 được coi là không dùng nữa và sẽ gây ra lỗi cấp độ object
4. Nó không còn được dùng nữa, do đó không phát ra lỗi. 5. 1. 0 Đã thay đổi. Phương thức tĩnh __set_state[] hiện được gọi cho các lớp được xuất bởi var_export[]. 5. 1. 0 Đã thêm. Các phương thức __isset[] và __unset[]