Computer >> Máy Tính >  >> Lập trình >> PHP

Nạp chồng phương thức trong PHP là gì?

Nạp chồng phương pháp là một khái niệm của 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. Nạp chồng hàm hoặc nạp chồng phương thức là một tính năng cho phép tạo một số phương thức có tên tương tự hoạt động khác nhau trong kiểu tham số đầu vào mà nó chấp nhận làm đối số.

Khái niệm trên phù hợp với các ngôn ngữ lập trình khác và nó được gọi là nạp chồng phương thức đa hình tĩnh.

Ví dụ

Hãy hiểu qua một ví dụ.

<?php
   class machine {
      function doTask($var1){
         return $var1;
      }
      function doTask($var1,$var2){
         return $var1 * $var1 ;
      }
   }
   $task1 = new machine();
   $task1->doTask(5,10);
?>

Đầu ra:

Error

Giải thích:

Đ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 được nạp chồng. Để gọi cái sau, phải truyền hai tham số, 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 tại thời điểm mã hóa được gọi là quá tải phương thức đa hình tĩnh, tức là quá tải.

Hãy thảo luận về cách đạt được quá trình nạp chồng phương thức 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 __call () của PHP để đạt được tính năng nạp chồng phương thức.

Trong PHP nạp chồng 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 ta 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 đó.

Ví dụ

Hãy hiểu về quá trình nạp chồng phương thức với một ví dụ.

<?php
   class Shape {
      const PI = 3.142 ;
      function __call($name,$arg){
         if($name == 'area')
            switch(count($arg)){
               case 0 : return 0 ;
               case 1 : return self::PI * $arg[0] ;
               case 2 : return $arg[0] * $arg[1];
            }
      }
   }
   $circle = new Shape();
   echo $circle->area(3);
   $rect = new Shape();
   echo $rect->area(8,6);
?>

Đầu ra:

9.426
48

Giải thích:

Ở đây, phương thức area () được tạo theo quy trình dynm và được thực thi với sự trợ giúp của phương thức magic __call () và hành vi của nó thay đổi theo đường truyền của các tham số là đối tượng.