Hướng dẫn what is method overloading and overriding in php? - nạp chồng và ghi đè phương thức trong php là gì?

Nói đúng ra, không có sự khác biệt, vì bạn cũng không thể làm được :)

Ghi đè chức năng có thể đã được thực hiện với tiện ích mở rộng PHP như APD, nhưng nó không được dùng và phiên bản cuối cùng của AFAIK là không thể sử dụng được.

Không thể thực hiện quá tải chức năng trong PHP do gõ động, tức là trong PHP, bạn không "định nghĩa" các biến là một loại cụ thể. Thí dụ:

$a=1;
$a='1';
$a=true;
$a=doSomething();

Mỗi biến thuộc một loại khác nhau, nhưng bạn có thể biết loại trước khi thực hiện (xem loại thứ 4). Để so sánh, các ngôn ngữ khác sử dụng:

int a=1;
String s="1";
bool a=true;
something a=doSomething();

Trong ví dụ cuối cùng, bạn phải đặt mạnh loại biến của biến (làm ví dụ, tôi đã sử dụng kiểu dữ liệu "cái gì đó").


Một "vấn đề" khác tại sao quá tải chức năng là không thể trong PHP: PHP có hàm gọi là func_get_args (), trả về một mảng các đối số hiện tại, bây giờ hãy xem xét mã sau:

function hello($a){
  print_r(func_get_args());
}

function hello($a,$a){
  print_r(func_get_args());
}

hello('a');
hello('a','b');

Xem xét cả hai chức năng chấp nhận bất kỳ số lượng đối số nào, trình biên dịch nên chọn cái nào?


Cuối cùng, tôi muốn chỉ ra lý do tại sao các câu trả lời ở trên là sai một phần; quá tải chức năng/ghi đè không bằng quá tải phương thức/ghi đè.function overloading/overriding is NOT equal to method overloading/overriding.

Trong đó một phương thức giống như một hàm nhưng cụ thể cho một lớp, trong trường hợp đó, PHP cho phép ghi đè trong các lớp, nhưng một lần nữa không quá tải, do ngữ nghĩa ngôn ngữ.

Để kết luận, các ngôn ngữ như JavaScript cho phép ghi đè (nhưng một lần nữa, không quá tải), tuy nhiên chúng cũng có thể hiển thị sự khác biệt giữa việc ghi đè chức năng người dùng và phương thức:

/// Function Overriding ///

function a(){
   alert('a');
}
a=function(){
   alert('b');
}

a(); // shows popup with 'b'


/// Method Overriding ///

var a={
  "a":function(){
    alert('a');
  }
}
a.a=function(){
   alert('b');
}

a.a(); // shows popup with 'b'


Chức năng quá tải trong PHP

Quá tải chức năng 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ố.

Thí dụ

Bây giờ chúng tôi thấy một ví dụ để thực hiện quá tải chức năng -

& nbsp; bản demo trực tiếp

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

Đầu ra

Điều này sẽ tạo ra đầu ra sau -

9.42648

Chức năng ghi đè trong PHP

Trong chức năng ghi đè, các lớp cha và con có cùng tên hàm và số lượng đối số

Thí dụ

Bây giờ chúng tôi thấy một ví dụ để thực hiện quá tải chức năng -

& nbsp; bản demo trực tiếp

demo();
   $ob->display();
   $ob2 = new Derived;
   $ob2->demo();
   $ob2->display();
?>

Đầu ra

Điều này sẽ tạo ra đầu ra sau -

Base class function!
Base class function declared final!
Derived class function!
Base class function declared final!

Hướng dẫn what is method overloading and overriding in php? - nạp chồng và ghi đè phương thức trong php là gì?

9.42648

  • Chức năng ghi đè trong PHP
  • Trong chức năng ghi đè, các lớp cha và con có cùng tên hàm và số lượng đối số
  • Bây giờ cho chúng tôi xem một ví dụ để thực hiện ghi đè chức năng -
  • Cập nhật vào ngày 02 tháng 1 năm 2020 06:36:33
  • Câu hỏi và câu trả lời liên quan
  • Sự khác biệt giữa quá tải chức năng và ghi đè trong C ++
  • Điều gì đang vượt qua và quá tải dưới tính đa hình trong Java?
  • Quá tải PHP
  • Phương thức quá tải phương thức V/S ghi đè trong Java
  • Sự khác biệt giữa quá tải phương thức và ghi đè phương thức trong Java là gì?
  • Chức năng quá tải và loại trả về trong C ++
  • Chức năng quá tải và từ khóa Const trong C ++
  • Phương pháp quá tải trong PHP là gì?
  • Chức năng quá tải trong JavaScript là gì?
  • Sự khác biệt giữa việc ghi đè chức năng và ẩn phương thức trong C#là gì?
  • Ghi đè trong C#

Phương pháp quá tải trong 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 và ghi đè phương thức là gì?

Ghi đè xảy ra khi chữ ký phương thức giống nhau trong siêu lớp và lớp con.Quá tải xảy ra khi hai hoặc nhiều phương thức trong cùng một lớp có cùng tên nhưng các tham số khác nhau.

Php có hỗ trợ quá tải và ghi đè phương pháp 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 quá tải phương thức và ghi đè phương thức giải thích với một ví dụ là gì?

Trong quá tải phương thức, các phương thức phải có cùng tên và các chữ ký khác nhau. Trong phương thức ghi đè phương thức, các phương thức phải có cùng tên và cùng một chữ ký.Trong quá tải phương thức, loại trả về có thể hoặc không thể giống nhau, nhưng chúng ta chỉ cần thay đổi tham số. In method overriding, methods must have the same name and same signature. In method overloading, the return type can or can not be the same, but we just have to change the parameter.