PHP中的方法過載是什麼?
方法過載是面向物件程式設計的一個概念,它有助於輕鬆構建複合應用程式。函式過載或方法過載是一個允許建立多個具有相同名稱但根據其接受的引數型別的不同而以不同方式工作的函式的功能。
上述概念對於其他程式語言來說很好,它被稱為靜態多型性,即方法過載。
示例
讓我們透過一個例子來理解。
<?php
class machine {
function doTask($var1){
return $var1;
}
function doTask($var1,$var2){
return $var1 * $var1 ;
}
}
$task1 = new machine();
$task1->doTask(5,10);
?>輸出
Error
解釋
這將生成一個錯誤,因為PHP會提示您已宣告此方法兩次。
但是其他程式語言說,doTask($var1) 和 doTask($var1,$var2) 是過載的方法。要呼叫後者,必須傳遞兩個引數,而前者只需要一個引數。
因此,這種行為,即在編碼時呼叫函式的決策,被稱為靜態多型性,即方法過載。
讓我們討論如何實現與PHP5相關的方方法過載。在PHP中,我們必須利用PHP的魔術方法__call()來實現方法過載。
在PHP中,過載意味著方法的行為會根據輸入引數動態變化。在本教程中,我們將瞭解這些概念。讓我們討論__call()方法。
__call()
如果一個類執行__call(),那麼如果用一個不存在的方法呼叫該類的物件,則會呼叫__call()來代替該方法。
示例
讓我們透過一個例子來理解方法過載。
<?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);
?>輸出
9.426 48
解釋
此處area()方法是動態建立的,並在魔術方法__call()的幫助下執行,並且它的行為根據作為物件傳遞的引數而變化。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP