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

Tham gia bản tin của tôi

Nạp chồng phương thức là một khái niệm trong OOP nơi tồn tại nhiều phương thức cùng tên trong một lớp chấp nhận một số lượng tham số hoặc kiểu dữ liệu khác nhau. Ví dụ, một phương thức add() có thể được nạp chồng bằng cách định nghĩa nó hai lần;

Chúng ta thậm chí có thể quá tải hàm bằng cách cung cấp các đối số nguyên trong một phương thức trong khi cung cấp các đối số dấu phẩy động trong phương thức kia. Kiểu nạp chồng này phổ biến trong các ngôn ngữ như Java và C++

Tuy nhiên, khái niệm nạp chồng phương thức khá khác trong PHP. Quá tải phương thức là quá trình tạo động một phương thức với sự trợ giúp của các phương thức ma thuật

Chúng ta có thể tạo các phương thức không tồn tại trong phạm vi của một lớp. Nó hoạt động cho cả phương thức lớp và phương thức tĩnh

Các phương thức ma thuật __call()__callStatic() được sử dụng để làm quá tải các phương thức động. Rõ ràng từ cái tên mà phương thức __call() được sử dụng cho các phương thức lớp và phương thức callStatic() được sử dụng cho các phương thức tĩnh

Cú pháp của các phương thức này được hiển thị bên dưới

__call($name, $arguments){
//function  body
}

Ở đây,

";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
0 là tên của phương thức động và
";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
1 là một mảng chứa các đối số của phương thức động. Bên trong phương thức, chúng ta có thể truy cập các đối số bằng cách sử dụng các chỉ số trong mảng
";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
1

Sử dụng Phương thức ma thuật __call() để triển khai quá tải phương thức trong PHP

Chúng ta có thể sử dụng phương thức __call() để tạo một phương thức động trong PHP. Phương thức sẽ được thực thi khi chúng ta gọi một phương thức chưa được tạo trong ngữ cảnh đối tượng

Quá trình này được gọi là nạp chồng phương thức trong PHP

Ví dụ: tạo một lớp

";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
5 và phương thức __call() bên trong nó. Đặt tên cho các tham số
";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
0 và
";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
1 trong phương thức này

Bên trong phương thức, in biến

";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
0 và các phần tử của mảng
";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
1. Bên ngoài lớp, tạo một đối tượng
inside the method: student_info
id:1
name:Biswash
1 của lớp
";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
5

Tiếp theo, gọi phương thức

inside the method: student_info
id:1
name:Biswash
3 với đối tượng
inside the method: student_info
id:1
name:Biswash
1. Truyền các đối số
inside the method: student_info
id:1
name:Biswash
5 và
inside the method: student_info
id:1
name:Biswash
6 trong phương thức

Mã ví dụ

";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>

Hãy hiểu quy trình của ví dụ trên

Khi chúng ta gọi phương thức

inside the method: student_info
id:1
name:Biswash
3 với các tham số, chương trình không tìm thấy phương thức đó trong lớp
";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
5. Tuy nhiên, phương thức __call() tồn tại trong lớp, vì vậy chức năng này được thực thi

Tham số

";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
0 trong phương thức giữ phương thức
inside the method: student_info
id:1
name:Biswash
3 và tham số
";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
1 giữ các đối số
inside the method: student_info
id:1
name:Biswash
5 và
inside the method: student_info
id:1
name:Biswash
6 là
";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } University::professor_info(0010,'Professor Jack '); ?>
5. Các tham số được in bên trong phương thức __call()

đầu ra

inside the method: student_info
id:1
name:Biswash

Theo cách này, chúng ta có thể sử dụng phương thức ma thuật __call() để nạp chồng phương thức trong ngữ cảnh đối tượng trong PHP

Sử dụng Phương thức ma thuật __callStatic() để triển khai quá tải phương thức trong PHP

Chúng ta cũng có thể sử dụng tính năng nạp chồng phương thức trong ngữ cảnh tĩnh trong PHP. Chúng ta phải sử dụng phương pháp ma thuật __callStatic()

Định nghĩa hàm của phương thức tương tự như định nghĩa của phương thức

inside the method: professor_info
id:8
name:Professor Jack
0. Tuy nhiên, khi chúng ta sử dụng nó trong ngữ cảnh tĩnh, phương thức phải là tĩnh

Vì là ngữ cảnh tĩnh nên chúng ta không cần tạo thể hiện của lớp. Chúng ta có thể gọi trực tiếp phương thức được tạo động bằng cách sử dụng toán tử

inside the method: professor_info
id:8
name:Professor Jack
1 từ lớp

Ví dụ, tạo một phương thức __callStatic() bên trong lớp

";
        echo "id:".$arguments[0]."
"; echo "name:".$arguments[1]."
"; } } $student = new University; $student->student_info(001,'Biswash'); ?>
5 như chúng ta đã làm với phương thức __call(). Đừng quên viết từ khóa
inside the method: professor_info
id:8
name:Professor Jack
5 trong khi xác định phương thức

Điền các tham số và phần thân của phương thức như trong phương thức trên. Bên ngoài lớp, gọi một phương thức

inside the method: professor_info
id:8
name:Professor Jack
6 bằng cách sử dụng toán tử
inside the method: professor_info
id:8
name:Professor Jack
1 bởi lớp là
inside the method: professor_info
id:8
name:Professor Jack
8

Phương thức nạp chồng nghĩa là gì trong PHP?

Nạp chồng hàm trong PHP được dùng để tạo động các thuộc tính và phương thức . Các thực thể động này được xử lý bằng các phương thức ma thuật có thể được sử dụng trong một lớp cho các loại hành động khác nhau. Nạp chồng hàm chứa cùng một tên hàm và hàm đó thực hiện các tác vụ khác nhau tùy theo số lượng đối số.

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

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

Quá tải phương thức có nghĩa là gì?

Nạp chồng phương thức cho phép một lớp định nghĩa nhiều phương thức có cùng tên nhưng khác chữ ký . Nghĩa là, nó cho phép bạn định nghĩa các phương thức khác nhau có cùng tên nhưng phản hồi các thông báo tương ứng khác nhau được gửi đến một thể hiện của lớp.

PHP có cho phép nạp chồng phương thức không?

PHP không hỗ trợ nạp chồng phương thức . Trong trường hợp bạn chưa bao giờ nghe nói về nạp chồng phương thức, điều đó có nghĩa là ngôn ngữ có thể chọn phương thức dựa trên tham số bạn đang sử dụng để gọi phương thức đó. Điều này có thể thực hiện được ở nhiều ngôn ngữ lập trình khác như Java, C++.