Hướng dẫn method overloading in php w3schools - nạp chồng phương thức trong php w3schools


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ụ.

doTask(5,10);
?>

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ụ.

area(3);
   $rect = new Shape();
   echo $rect->area(8,6);
?>

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.

Hướng dẫn method overloading in php w3schools - nạp chồng phương thức trong php w3schools

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
area(3);
   $rect = new Shape();
   echo $rect->area(8,6);
?>
5
Error
75
area(3);
   $rect = new Shape();
   echo $rect->area(8,6);
?>
7____28
Error
78
9.426
48
0

9.426
48
1
9.426
48
2
Error
82

  •     
    Error
    6
    Error
    95
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    5
    Error
    97
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    7
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    8__
  • 9.426
    48
    1
    9.426
    48
    2
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    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
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    5
    Error
    75
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    7____28
    Error
    78
    9.426
    48
    0

    9.426
    48
    1
    9.426
    48
    2
    Error
    82

        

    Error
    6
    Error
    95
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    5
    Error
    97
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    7
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    8__
    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

    class GFG {

        ____10

    Error
    1
    Error
    2
    Error
    3
    Error
    4

        

    Error
    6
    Error
    7
    Error
    8

        ____10

    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    1
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    2

        

    Error
    6
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    5
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    6
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    7
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    8
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    9
    9.426
    48
    0

    9.426
    48
    1
    9.426
    48
    2
    9.426
    48
    3
    9.426
    48
    4

    9.426
    48
    1
    9.426
    48
    6
    9.426
    48
    7
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    7
    9.426
    48
    9
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    9
    9.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

        

    Error
    6
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    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:
    7
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    7
    9.426
    48
    0

    9.426
    48
    1
    9.426
    48
    2
    Calling object method 'runTest' in object context
    Calling static method 'runTest' in static context
    22____34

    9.426
    48
    1
    Calling object method 'runTest' in object context
    Calling static method 'runTest' in static context
    5
    Calling object method 'runTest' in object context
    Calling static method 'runTest' in static context
    6
    Calling object method 'runTest' in object context
    Calling static method 'runTest' in static context
    7
    Calling object method 'runTest' in object context
    Calling static method 'runTest' in static context
    6
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    7
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    8
    9.426
    48
    62

    34

    9.426
    48
    6
    9.426
    48
    7
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    78

    9.426
    48
    1
    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

    9.426
    48
    1class2 class3

    9.426
    48
    14 class6

        

    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
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    5 GFG {2
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    7
    9.426
    48
    0

    9.426
    48
    1
    9.426
    48
    2 GFG {7
    9.426
    48
    4

    9.426
    48
    14     1
    9.426
    48
    6
    9.426
    48
    7
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    7    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
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    5
    Error
    01
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    7
    9.426
    48
    0

    9.426
    48
    1
    9.426
    48
    2
    Error
    06
    9.426
    48
    4

    9.426
    48
    1
    Error
    09
    9.426
    48
    6
    9.426
    48
    7
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    7    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
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    5
    Error
    19

    9.426
    48
    14
    9.426
    48
    6
    Error
    23

        

    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

    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
    27
    Error
    2
    Error
    29
    Error
    30

    Error
    27
    Error
    32

    9.426
    48
    2
    Error
    27
    Error
    35
    Error
    36
    9.426
    48
    4

    Error
    38
    Error
    27
    Error
    40

    Error
    09
    Error
    27
    Error
    43

    Error
    38
    Error
    27
    Error
    40

    9.426
    48
    2
    Error
    27
    Error
    49
    Error
    50
    9.426
    48
    4

    9.426
    48
    2
    Error
    53
    9.426
    48
    4

    9.426
    48
    2
    Error
    27
    Error
    57
    Error
    50
    9.426
    48
    4

    9.426
    48
    2
    Error
    61
    9.426
    48
    4

    9.426
    48
    2
    Error
    27
    Error
    65
    Error
    36
    9.426
    48
    4

    Error
    68

    Output:

    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:

    Quá tải phương thức: Đây là một loại quá tải để tạo các phương thức động không được khai báo trong phạm vi lớp. Phương pháp PHP quá tải cũng kích hoạt các phương pháp ma thuật dành riêng cho mục đích phù hợp. Không giống như quá tải thuộc tính, quá tải phương thức PHP cho phép gọi chức năng trên cả bối cảnh đối tượng và tĩnh. Các chức năng ma thuật liên quan là, It is a type of overloading for creating dynamic methods that are not declared within the class scope. PHP method overloading also triggers magic methods dedicated to the appropriate purpose. Unlike property overloading, PHP method overloading allows function call on both object and static context. The related magic functions are,

    • __call () - được kích hoạt trong khi gọi các phương thức quá tải trong bối cảnh đối tượng.
    • __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.

    Example:  

    PHP

    class GFG {

        ____10

    Error
    1
    Error
    2
    Error
    3
    Error
    4

        

    Error
    6
    Error
    7
    Error
    8

    3

    Error
    84
    Error
    85
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    8
    Error
    78
    Error
    88
    Error
    36
    9.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

    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    1
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    2

        

    Error
    6
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    5
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    6
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    7
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    8
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    9
    9.426
    48
    0

    3

    Error
    84
    Error
    85
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    8
    Error
    78
    Error
    88
    Error
    36
    9.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

    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
    27
    Error
    2
    Error
    29
    Error
    30

    Error
    27
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    21
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    22
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    23

    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    24
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    25
    area(3);
       $rect = new Shape();
       echo $rect->area(8,6);
    ?>
    23

    Error
    68

    Output:

    Calling object method 'runTest' in object context
    Calling static method 'runTest' in static context


    Phương pháp quá tải PHP là gì?

    Quá tải phương thức: Đây là một loại quá tải để tạo các phương thức động không được khai báo trong phạm vi lớp. Phương pháp PHP quá tải cũng kích hoạt các phương pháp ma thuật dành riêng cho mục đích phù hợp. Không giống như quá tải thuộc tính, quá tải phương thức PHP cho phép gọi chức năng trên cả bối cảnh đối tượng và tĩnh.a type of overloading for creating dynamic methods that are not declared within the class scope. PHP method overloading also triggers magic methods dedicated to the appropriate purpose. Unlike property overloading, PHP method overloading allows function call on both object and static context.

    Phương pháp quá tải có được phép trong PHP 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++.

    Sự khác biệt giữa phương thức ghi đè và quá tải trong PHP là gì?

    Quá tải chức năng và ghi đè là tính năng OOPS trong PHP.Trong quá tải chức năng, nhiều hơn một hàm có thể có cùng một chữ ký phương thức nhưng số lượng đối số khác nhau.Nhưng trong trường hợp ghi đè chức năng, nhiều hơn một hàm sẽ có cùng chữ ký phương thức và số lượng đối số.

    Quá tải OOP PHP là gì?

    Quá tải trong PHP cung cấp các phương tiện để tạo các thuộc tính và phương thức tự động.Các thực thể động này được xử lý thông qua các phương thức ma thuật mà người ta có thể thiết lập trong một lớp cho các loại hành động khác nhau.provides means to dynamically create properties and methods. These dynamic entities are processed via magic methods one can establish in a class for various action types.