Hướng dẫn is method overriding possible in php? - có thể ghi đè phương thức trong php không?
Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu về phương pháp ghi đè PHP và cách áp dụng nó một cách hiệu quả trong tập lệnh của bạn.: in this tutorial, you will learn about the PHP overriding method and how to apply it effectively in your script. Show
Giới thiệu về phương pháp ghi đè PHPGhi đè phương thức cho phép một lớp trẻ cung cấp một triển khai cụ thể của một phương thức đã được cung cấp bởi lớp cha của nó. Để ghi đè một phương thức, bạn xác định lại phương thức đó trong lớp con với cùng tên, tham số và loại trả về. Phương thức trong lớp cha được gọi là phương thức ghi đè, trong khi phương thức trong lớp con được gọi là phương thức ghi đè. Mã trong phương thức ghi đè ghi đè (hoặc thay thế) mã trong phương thức ghi đè.overridden method, while the method in the child class is known as the overriding method. The code in the overriding method overrides (or replaces) the code in the overridden method. PHP sẽ quyết định phương thức nào (phương thức ghi đè hoặc ghi đè) để gọi dựa trên đối tượng được sử dụng để gọi phương thức.
Hãy để lấy một ví dụ để hiểu phương thức ghi đè tốt hơn. Ví dụ sau đây xác định lớp 1 có một phương thức công khai 2 và lớp 3 kế thừa lớp 1:
Khi bạn gọi phương thức 2 thông qua phiên bản Android, PHP gọi phương thức 2 của lớp 1:
Đây là một kịch bản kế thừa điển hình. Đôi khi, bạn muốn thay thế hoàn toàn hành vi phương thức của lớp cha bằng một lớp mới. Trong trường hợp này, bạn cần ghi đè phương thức của lớp cha. Để ghi đè một phương thức, bạn xác định lại phương thức trong lớp cha trong lớp con nhưng sử dụng logic khác. Sau đây thêm phương thức 2 vào lớp 3 trả về một thông điệp lời chào khác nhau:
Làm thế nào nó hoạt động
Biểu đồ lớp sau đây minh họa mối quan hệ giữa các lớp 1 và 3: Gọi phương thức ghi đè trong phương thức ghi đèKhi bạn ghi đè một phương thức, bạn sẽ có hai phiên bản của cùng một phương thức: một trong lớp cha và một trong lớp con. Nếu bạn gọi phương thức của lớp cha trong phương thức trong lớp con, bạn không thể sử dụng từ khóa 0 như thế này:
1 sẽ tự gọi mình là vô thời hạn. Để gọi phương thức 2 của lớp 1, bạn cần sử dụng 4 với toán tử phân giải phạm vi 5) như sau:
Trong ví dụ này, phương thức 2 trong lớp Andoird gọi phương thức 2 của lớp 1. Nó kết hợp chuỗi được trả về bằng phương pháp 2 của phương thức 1 với chuỗi theo nghĩa đen 1 và trả về chuỗi được nối. Thêm về phương pháp ghi đè PHPGiả sử rằng bạn cần xác định một lớp 2 mới mở rộng lớp 3. Sau đây xác định lớp 3:
Phương pháp 5 kiểm tra xem số tiền rút tiền lớn hơn 0 và nhỏ hơn hoặc bằng số dư hiện tại trước khi khấu trừ nó từ số dư. Thứ hai, xác định lớp 2 kế thừa lớp 3. Lớp 2 cũng có phương thức 5 ghi đè phương thức 5 của lớp 3:
Phương pháp 5 trong lớp 2 kiểm tra số tiền rút tiền so với số dư tối thiểu trước khi khấu trừ nó. Biểu đồ lớp sau đây minh họa mối quan hệ giữa các lớp BankAccount và CheckingAccount: Phương pháp cuối cùngĐể ngăn phương thức trong lớp con ghi đè phương thức trong lớp cha, bạn có thể đặt tiền tố phương thức với từ khóa 4:
Sau đây thêm phương thức 5 vào lớp robot:
Nếu bạn cố gắng ghi đè phương thức 5 từ lớp 3, bạn sẽ gặp lỗi. Ví dụ:
Error: 0 Bản tóm tắt
Bạn có thấy hướng dẫn này hữu ích không? Phương pháp hỗ trợ PHP có ghi đè không?PHP không hỗ trợ quá tải phương pháp. Trong trường hợp bạn chưa bao giờ nghe nói về quá tải phương thức, điều đó có nghĩa là ngôn ngữ có thể chọn một phương thức dựa trên các tham số bạn đang sử dụng để gọi nó. Điều này là có thể trong nhiều ngôn ngữ lập trình khác như Java, C ++.. In case you've never heard of method overloading, it means that the language can pick a method based on which parameters you're using to call it. This is possible in many other programming languages like Java, C++.
Tại sao không thể quá tải phương thức trong PHP?Bạn không thể quá tải các chức năng PHP.Chữ ký chức năng chỉ dựa trên tên của chúng và không bao gồm danh sách đối số, vì vậy bạn không thể có hai hàm cùng tên.Quá tải phương pháp lớp khác nhau trong PHP so với nhiều ngôn ngữ khác.PHP sử dụng cùng một từ nhưng nó mô tả một mẫu khác.Function signatures are based only on their names and do not include argument lists, so you cannot have two functions with the same name. Class method overloading is different in PHP than in many other languages. PHP uses the same word but it describes a different pattern.
Làm thế nào chúng ta có thể đạt được quá tải phương pháp trong PHP?Để đạt được quá tải phương pháp trong PHP, chúng ta phải sử dụng các phương thức ma thuật của PHP __call () để đạt được quá tải phương pháp.__call (): Trong PHP, nếu một lớp thực thi __call () và nếu một đối tượng của lớp đó được gọi bằng một phương thức không tồn tại thì __call () được gọi thay vì phương thức đó.
PHP có hỗ trợ ghi đè chức năng cha mẹ không?Ghi đè chỉ phù hợp với các lớp dẫn xuất, trong đó lớp cha đã xác định một phương thức và lớp dẫn xuất muốn ghi đè phương thức đó.Trong PHP, bạn chỉ có thể quá tải các phương thức bằng phương pháp ma thuật __call.you can only overload methods using the magic method __call . |