Quá tải phương pháp là một khái niệm lập trình hướng đối tượng giúp xây dựng ứng dụng tổng hợp một cách dễ dàng. Quá tải chức năng hoặc quá tải phương thức là một tính năng cho phép tạo ra một số phương thức có tên tương tự hoạt động khác nhau trong loại tham số đầu vào mà nó chấp nhận làm đối số.
Khái niệm trên là tốt cho các ngôn ngữ lập trình khác và nó được gọi là quá tải phương pháp đa hình tĩnh.
Thí dụ
Hãy hiểu thông qua một ví dụ.
Output:
Error
Explanation:
Điều này sẽ tạo ra một lỗi vì PHP sẽ nói rằng bạn đã khai báo phương thức này hai lần. Nhưng các ngôn ngữ lập trình khác cho biết, Dotask [$ var1] và dotask [$ var1, $ var2] là các phương thức quá tải. Để gọi cái sau, hai tham số phải được thông qua, trong khi cái trước chỉ yêu cầu một tham số. Vì vậy, hành vi này tức là quyết định gọi một hàm theo thời gian mã hóa được gọi là quá tải phương thức đa hình tĩnh.
But Other programming languages says , doTask[$var1] and doTask[$var1,$var2] are overloaded methods. To call the latter, two parameters must be passed, whereas the former requires only one parameter.
so this behavior i.e decision to call a function at coding time is known as static polymorphic i.e method
overloading.
Chúng ta hãy thảo luận về cách đạt được quá tải phương pháp liên quan đến PHP5. Trong trường hợp của 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.
Trong quá tải PHP có nghĩa là hành vi của phương thức thay đổi động theo tham số đầu vào. Trong hướng dẫn này, chúng tôi sẽ hiểu những nhận thức đó. Hãy thảo luận về phương thức __call [].
__call[]:
Nếu một lớp thực thi __call [], thì 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 đó.
Thí dụ
Hãy hiểu phương pháp quá tải với một ví dụ.
Output:
9.426 48
Explanation:
Ở đây Phương thức [] phương thức được tạo ra và thực hiện với sự trợ giúp của Phương thức ma thuật __call [] và hành vi của nó thay đổi theo thông số của tham số là đối tượng.
Cập nhật vào ngày 31 tháng 12 năm 2019 08:29:38
- Câu hỏi và câu trả lời liên quan
- Phương pháp quá tải trong C#là gì?
- Phương pháp quá tải trong Java là gì?
- Quá tải PHP
- Phương pháp đa hình thời gian chạy hoặc quá tải phương pháp động là gì?
- Sự khác biệt giữa quá tải phương thức và ẩn phương thức trong Java là gì?
- Sự khác biệt giữa quá tải phương thức và ghi đè phương thức trong Java là gì?
- Quá tải trong C#là gì?
- Quá tải trong Java là gì?
- Phương pháp quá tải trong Java
- Quá tải hàm tạo trong Java là gì?
- Chức năng quá tải trong JavaScript là gì?
- Quá tải là gì? Điều gì xảy ra nếu chúng ta quá tải một phương pháp chính trong Java?
- Chức năng quá tải và ghi đè trong PHP
- Sử dụng quá tải phương pháp trong Java
- Điều gì đang quá tải một toán tử Unary trong C ++?
__callstatic [] - được kích hoạt trong khi gọi các phương thức quá tải trong bối cảnh tĩnh.
Error
6 5 Error
757____28Error
789.426
48
0
9.426
48
19.426
48
2 Error
82
Error6
Error95 5
Error9778__
9.426 481
9.426 482 04
__callstatic [] - được kích hoạt trong khi gọi các phương thức quá tải trong bối cảnh tĩnh.
Error
6 5 Error
757____28Error
789.426
48
0
9.426
48
19.426
48
2 Error
82
Error
6 Error
95 5 Error
9778__ Function overloading is the ability to create multiple functions of the same name with different
implementations. Function overloading in PHP? Function overloading in PHP is used to dynamically create properties and methods. These dynamic entities are processed by magic methods which can be used in a class for various action types. Function overloading contains same function name and that function performs different task according to number of arguments. For example, find the area of certain shapes where radius are given then it should return area of circle if height and
width are given then it should give area of rectangle and others. Like other OOP languages function overloading can not be done by native approach. In PHP function overloading is done with the help of magic function __call[]. This function takes function name and arguments.
Tài sản và quy tắc quá tải trong PHP:
- Tất cả các phương pháp quá tải phải được định nghĩa là công khai.
- Sau khi tạo đối tượng cho một lớp, chúng ta có thể truy cập một tập hợp các thực thể là thuộc tính hoặc phương thức không được xác định trong phạm vi của lớp.
- Các thực thể như vậy được cho là các thuộc tính hoặc phương thức quá tải và quá trình được gọi là quá tải.
- Để làm việc với các thuộc tính hoặc chức năng quá tải này, các phương thức ma thuật PHP được sử dụng.
- Hầu hết các phương thức ma thuật sẽ được kích hoạt trong bối cảnh đối tượng ngoại trừ phương thức __callstatic [] được sử dụng trong bối cảnh tĩnh.
Các loại quá tải trong PHP: Có hai loại quá tải trong PHP. There are two types of overloading in PHP.
- Quá tải tài sản
- Phương pháp quá tải
Quá tải thuộc tính: Quá tải thuộc tính PHP được sử dụng để tạo các thuộc tính động trong bối cảnh đối tượng. Để tạo các thuộc tính này, không cần dòng mã riêng biệt. Một thuộc tính được liên kết với một thể hiện lớp và nếu nó không được khai báo trong phạm vi của lớp, nó được coi là thuộc tính quá tải. Các hoạt động sau được thực hiện với các thuộc tính quá tải trong PHP. PHP property overloading is used to create dynamic properties in the object context. For creating these properties no separate line of code is needed. A property associated with a class instance, and if it is not declared within the scope of the class, it is considered as overloaded property. Following operations are performed with overloaded properties in PHP.
- Cài đặt và nhận các thuộc tính quá tải.
- Đánh giá cài đặt thuộc tính quá tải.
- Hoàn tác cài đặt thuộc tính như vậy.
Trước khi thực hiện các hoạt động, chúng ta nên xác định các phương pháp ma thuật phù hợp. đó là,
- __set []: Được kích hoạt trong khi khởi tạo các thuộc tính quá tải. triggered while initializing overloaded properties.
- __get []: Được kích hoạt trong khi sử dụng các thuộc tính quá tải với các câu lệnh in PHP. triggered while using overloaded properties with PHP print statements.
- __isset []: Phương thức ma thuật này được gọi khi chúng tôi kiểm tra các thuộc tính quá tải với hàm isset [] This magic method is invoked when we check overloaded properties with isset[] function
- __unset []: Tương tự, hàm này sẽ được gọi khi sử dụng php unset [] cho các thuộc tính quá tải. Similarly, this function will be invoked on using PHP unset[] for overloaded properties.
Example:
PHP
1 2
Error6 5 6789
9.426 480
9.426 481
9.426 482
9.426 483
9.426 484
9.426 481
9.426 486
9.426 4877
9.426 4899
9.426 484
Setting 'a' to '1' Getting 'a: 1 Is 'a' set? bool[true] Unsetting 'a' Is 'a' set? bool[false] 1 Private property are visible inside the class 2 Private property are not visible outside of class Getting 'hidden:3
Error6 5
Setting 'a' to '1' Getting 'a: 1 Is 'a' set? bool[true] Unsetting 'a' Is 'a' set? bool[false] 1 Private property are visible inside the class 2 Private property are not visible outside of class Getting 'hidden:77
9.426 480
9.426 481
9.426 482
Calling object method 'runTest' in object context Calling static method 'runTest' in static context22____34
9.426 481
Calling object method 'runTest' in object context Calling static method 'runTest' in static context5
Calling object method 'runTest' in object context Calling static method 'runTest' in static context6
Calling object method 'runTest' in object context Calling static method 'runTest' in static context7
Calling object method 'runTest' in object context Calling static method 'runTest' in static context678
9.426 486
75 GFG {
279.426
48
09.426
48
19.426
48
2 GFG {
79.426
48
49.426
48
17
5
Setting 'a' to '1'
Getting 'a: 1
Is 'a' set?
bool[true]
Unsetting 'a'
Is 'a' set?
bool[false]
1
Private property are visible inside the class 2
Private property are not visible outside of class
Getting 'hidden:
3
Error
6 5 Error
0179.426
48
09.426
48
19.426
48
2 Error
069.426
48
49.426
48
1Error
099.426
48
69.426
48
77
5
Setting 'a' to '1'
Getting 'a: 1
Is 'a' set?
bool[true]
Unsetting 'a'
Is 'a' set?
bool[false]
1
Private property are visible inside the class 2
Private property are not visible outside of class
Getting 'hidden:
3
Error
6 5 Error
199.426
48
18Error
78Error
88Error
369.426
48
4
Setting 'a' to '1'
Getting 'a: 1
Is 'a' set?
bool[true]
Unsetting 'a'
Is 'a' set?
bool[false]
1
Private property are visible inside the class 2
Private property are not visible outside of class
Getting 'hidden:
3
____10
1 2
Error
6 5 67899.426
48
08Error
78Error
88Error
369.426
48
4
Setting 'a' to '1'
Getting 'a: 1
Is 'a' set?
bool[true]
Unsetting 'a'
Is 'a' set?
bool[false]
1
Private property are visible inside the class 2
Private property are not visible outside of class
Getting 'hidden:
3Setting 'a' to '1'
Getting 'a: 1
Is 'a' set?
bool[true]
Unsetting 'a'
Is 'a' set?
bool[false]
1
Private property are visible inside the class 2
Private property are not visible outside of class
Getting 'hidden:
3Error
27 Error
2Error
29 Error
30Error
27212223242523Error
68Output:
Calling object method 'runTest' in object context
Calling static method 'runTest' in static context