Lập trình hướng đối tượng là một cách tiếp cận lập trình trong đó các đối tượng và lớp được sử dụng. Ngày nay Java và C ++ chủ yếu được sử dụng cho lập trình hướng đối tượng. Phạm vi lập trình hướng đối tượng trong PHP 4 bị hạn chế, nhưng trong PHP 5, mô hình đối tượng đã được viết lại để có hiệu suất tốt hơn và nhiều tính năng hơn. Bây giờ PHP 5 có một mô hình đối tượng đầy đủ Show nội dung Đối tượng là gì? Ý tưởng cơ bản đằng sau một ngôn ngữ hướng đối tượng là bao gồm một nhóm các biến và hàm thành một đơn vị duy nhất và giữ cho cả biến và hàm an toàn khỏi sự can thiệp và lạm dụng từ bên ngoài. Một đơn vị như vậy được gọi là đối tượng tác động lên dữ liệu. Cơ chế liên kết dữ liệu và chức năng với nhau được gọi là đóng gói. Tính năng này giúp dễ dàng sử dụng lại mã trong các dự án khác nhau. Các chức năng được khai báo trong một đối tượng cung cấp cách truy cập dữ liệu. Các chức năng của một đối tượng được gọi là các phương thức và tất cả các phương thức của một đối tượng đều có quyền truy cập vào các biến được gọi là các thuộc tính
Lớp học Trong lập trình hướng đối tượng, một lớp là một cấu trúc hoặc nguyên mẫu mà từ đó các đối tượng được tạo ra. Một lớp định nghĩa các thành viên cấu thành cho phép các thể hiện của lớp có trạng thái và hành vi. Các thành viên trường dữ liệu cho phép một đối tượng lớp duy trì trạng thái và các phương thức cho phép hành vi của đối tượng lớp. Hình ảnh sau đây cho thấy các thành phần của một lớp
PHP. Tạo các lớp và khởi tạo
Ví dụ
Trong ví dụ sau, từ khóa mới được sử dụng để khởi tạo một đối tượng. Ở đây $myobj đại diện cho một đối tượng của lớp Myclass
Hãy xem nội dung của lớp Myclass sử dụng hàm var_dump() (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)
đầu ra object(Myclass)#1 (0) { } Xem ví dụ trên trình duyệt Đặt thuộc tính
Ví dụ Sau khi một đối tượng được khởi tạo, bạn có thể truy cập thuộc tính của một lớp bằng toán tử đối tượng và ->. Bất kỳ thành viên nào được khai báo với từ khóa "riêng tư" hoặc "được bảo vệ" đều không thể được truy cập bên ngoài phương thức của lớp
đầu ra 10 Xem ví dụ trên trình duyệt Ghi chú. Có một lỗi phổ biến là sử dụng nhiều hơn một ký hiệu đô la khi truy cập các biến. Trong ví dụ trên sẽ không có ký hiệu $ trước font_size ( echo $f->font_size ). Sau khi xác định các phương thức, chúng ta sẽ thảo luận về một ví dụ với các thuộc tính lớp công khai, riêng tư và được bảo vệ Phương pháp cài đặt
Ví dụ Sau khi một đối tượng được khởi tạo, bạn có thể truy cập phương thức của một lớp bằng toán tử đối tượng và ->. Trong ví dụ sau, phương thức custom_print() sẽ in một chuỗi có kích thước và màu phông chữ cụ thể trong một phần tử đoạn html với sự trợ giúp của câu lệnh php echo
đầu ra
Xem ví dụ trên trình duyệt Bây giờ hãy thay đổi giá trị của font_size, font_color và chuỗi, đồng thời kiểm tra xem phương thức custimize_print() trả về kết quả gì.
đầu ra
Xem ví dụ trên trình duyệt PHP. Toán tử phân giải phạm vi (. ) Trong PHP, toán tử phân giải phạm vi còn được gọi là Paamayim Nekudotayim có nghĩa là "dấu hai chấm" hoặc "chấm kép hai lần" trong tiếng Do Thái. Dấu hai chấm (. ), là mã thông báo cho phép truy cập vào các thuộc tính hoặc phương thức tĩnh, hằng và bị ghi đè của một lớp PHP. Hằng số lớp
Định nghĩa và sử dụng hằng số ________số 8_______Hiểu các thuộc tính công cộng, riêng tư, được bảo vệ Các thuộc tính có thể là công khai, riêng tư hoặc được bảo vệ. Công khai có nghĩa là các thuộc tính có thể được truy cập ở mọi nơi, riêng tư có nghĩa là các thuộc tính có thể được truy cập bởi lớp xác định thành viên và được bảo vệ có nghĩa là các thuộc tính chỉ có thể được truy cập trong chính lớp đó và bởi các lớp cha và kế thừa Ví dụ
Hiểu các phương thức công khai, riêng tư, được bảo vệ Các phương thức có thể là công khai, riêng tư hoặc được bảo vệ. Công khai có nghĩa là các phương thức có thể được truy cập ở mọi nơi, riêng tư có nghĩa là các phương thức có thể được truy cập bởi lớp xác định thành viên và được bảo vệ có nghĩa là các phương thức chỉ có thể được truy cập trong chính lớp đó và bởi các lớp kế thừa và lớp cha 0Ghi chú. PHP sử dụng tính kế thừa trong mô hình đối tượng của nó và khi bạn mở rộng một lớp, lớp con sẽ kế thừa tất cả các phương thức công khai và được bảo vệ từ lớp cha. Khi chúng ta thảo luận về thừa kế, bạn sẽ có thêm thông tin về các thuộc tính và phương thức được bảo vệ Các phương thức Trình xây dựng PHP
Cú pháp chung để khai báo hàm tạo như sau hàm __construct([đối số1, đối số2,. , đối sốN]) Ví dụ 1đầu ra
Xem ví dụ trên trình duyệt Thêm ví dụ về hàm tạo Giống như các thuộc tính, các hàm tạo có thể gọi các phương thức của lớp hoặc các hàm khác. Trong ví dụ sau, không cần gọi riêng phương thức (sau khi tạo đối tượng và truyền tham số, xem ví dụ trước) vì nó đã được khai báo trong hàm tạo. Xem ví dụ sau 2đầu ra
Xem ví dụ trên trình duyệt Các phương thức hàm hủy PHP
Cú pháp chung để khai báo hàm hủy như sau chức năng __destroy Ví dụ 3đầu ra 4Xem ví dụ trên trình duyệt PHP. Sử dụng nhiều phiên bản của cùng một lớp Trong ví dụ sau, chúng tôi đã tạo nhiều đối tượng (thể hiện) của cùng một lớp và chuyển các giá trị khác nhau 5đầu ra
Xem ví dụ trên trình duyệt PHP. spl_autoload_register() Nhiều nhà phát triển viết các ứng dụng hướng đối tượng tạo một tệp nguồn PHP cho mỗi định nghĩa lớp. Một trong những điều khó chịu nhất là phải viết một danh sách dài các mục cần thiết ở đầu mỗi tập lệnh (một mục cho mỗi lớp). Theo truyền thống, hàm __autoload() được sử dụng để tự động tải các lớp. Kể từ PHP 5. 1. 2 một hàm mới spl_autoload_register() được giới thiệu cung cấp một giải pháp thay thế linh hoạt hơn cho các lớp tự động tải. Vì lý do này, việc sử dụng __autoload() không được khuyến khích và có thể không được dùng nữa hoặc bị xóa trong tương lai cú pháp 6Tham số NameDescriptionautoload_functionChức năng autoload đang được đăng ký. Nếu không có tham số nào được cung cấp, thì việc triển khai mặc định của spl_autoload() sẽ được đăng ký. throwThông số này chỉ định liệu spl_autoload_register() có ném ngoại lệ khi không thể đăng ký autoload_function hay không. prependNếu đúng, spl_autoload_register() sẽ thêm bộ nạp tự động vào ngăn xếp tự động nạp thay vì nối thêm vào Giá trị trả về Trả về TRUE nếu thành công hoặc FALSE nếu thất bại Bạn có thể sử dụng hàm spl_autoload_register() theo cách sau 7Ví dụ Lúc đầu, chúng tôi sẽ tạo hai lớp và lưu trữ chúng trong đường dẫn /php/classes-objects/resource lớp 1. php 8lớp 2. php 9Bây giờ, hãy tạo một chuỗi in tệp. php và lưu nó vào /php/classes-objects 0Trong ví dụ trên, chúng tôi đang cố gắng tạo hai đối tượng, trong đó tên lớp là 'lớp 1' (lưu trong /php/classes-objects/resource/class 1. php) và 'class2' (lưu trong /php/classes-objects/resource/class2. php). PHP chuyển tên này dưới dạng một chuỗi tới spl_autoload_register(), cho phép bạn chọn biến và sử dụng nó để "bao gồm" lớp/tệp thích hợp đầu ra
Xem ví dụ trên trình duyệt PHP. Di sản
Ví dụ Trong lớp con ví dụ sau, 'Mysubclass' kế thừa tất cả các thuộc tính được bảo vệ và phương thức công khai từ lớp 'Myclass'. Ngoài ra, chúng tôi thêm thuộc tính text-decoration trong câu lệnh echo trong phân lớp 'Mysubclass' 1đầu ra
Xem ví dụ trên trình duyệt PHP. giao diện
cú pháp 2PHP. Nhân bản đối tượng
Ví dụ Trong PHP, nhân bản đối tượng được thực hiện bằng cách sử dụng từ khóa clone. Đây là một ví dụ về nhân bản đối tượng Ví dụ. Nhân bản đối tượng bằng phương pháp ma thuật __clone 3đầu ra 4Xem ví dụ trên trình duyệt PHP. phương pháp ma thuật Tên hàm __construct(), __destroy(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke() . PHP bảo lưu tất cả các tên hàm bắt đầu bằng __ như một điều kỳ diệu Chúng ta đã thảo luận về các phương thức __construct(), __destroy() và __clone() Dưới đây là các phương pháp ma thuật khác __gọi() __call() được kích hoạt khi gọi các phương thức không thể truy cập trong ngữ cảnh đối tượng cú pháp. __call hỗn hợp công khai ( chuỗi $name , mảng $arguments ) __callStatic() __callStatic() được kích hoạt khi gọi các phương thức không thể truy cập trong ngữ cảnh tĩnh cú pháp. __call hỗn hợp công khai ( chuỗi $name , mảng $arguments ) __lấy() __get() được sử dụng để đọc dữ liệu từ các thuộc tính không thể truy cập cú pháp. __get hỗn hợp công khai ( chuỗi $name ) __bộ() __set() được chạy khi ghi dữ liệu vào các thuộc tính không thể truy cập cú pháp. public void __set ( string $name , hỗn hợp $value ) __isset() __isset() được kích hoạt bằng cách gọi isset() hoặc empty() trên các thuộc tính không thể truy cập cú pháp. bool công khai __isset ( chuỗi $name ) __unset() __unset() được gọi khi unset() được sử dụng trên các thuộc tính không thể truy cập cú pháp. khoảng trống công khai __unset ( chuỗi $name ) __ngủ() __sleep() được sử dụng để chuyển giao dữ liệu đang chờ xử lý hoặc thực hiện các tác vụ dọn dẹp tương tự. Ngoài ra, chức năng này rất hữu ích nếu bạn có các đối tượng rất lớn không cần phải lưu hoàn toàn cú pháp. mảng công khai __sleep ( void ) __thức dậy() __wakeup() được sử dụng để thiết lập lại bất kỳ kết nối cơ sở dữ liệu nào có thể đã bị mất trong quá trình tuần tự hóa và thực hiện các tác vụ khởi tạo lại khác Làm cách nào để lấy tên lớp trong PHP?Hàm get_class() là một hàm có sẵn trong PHP được sử dụng để trả về tên lớp của một đối tượng.
Cách xác định thuộc tính lớp trong PHP?Các lớp có thể có các biến bên trong nó. Các biến đó được gọi là thuộc tính. Một thuộc tính là một biến PHP bình thường ở bất kỳ kiểu dữ liệu nào (số nguyên, chuỗi, mảng, đối tượng, v.v.). Trong các lớp, trước khi khai báo một biến, chúng ta nên thêm từ khóa khả năng hiển thị để xác định vị trí của biến đó .
Làm cách nào để lấy tên lớp PHP mà không có không gian tên?Bạn có thể sử dụng ReflectionClass. getShortName lấy tên của lớp mà không có không gian tên của nó.
Làm cách nào để chạy lớp trong PHP?lớp php MyClass { hàm công khai Sum($a, $b) { $sum = $a+$b; . $funcName' |