第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

沒搞懂呀,求解

? ? public function __call($name, $args) {

? ? if ($name == 'speedDown') {

? ? ? ? $this->speed -= 10;

? ? }

}


$name, $args ?這兩個(gè)值是做什么用的, ? 還有 ?都知道函數(shù)不存在了 ?為什么還調(diào)用呀


正在回答

4 回答

首先要理解函數(shù)的重載,就是同一個(gè)函數(shù)名,傳遞不同參數(shù),來實(shí)現(xiàn)不同的方法內(nèi)容。

但php里是不能直接實(shí)現(xiàn)的,要通過__call方法。

所謂的函數(shù)不存在,是指函數(shù)沒有在類中定義,但你可以在__call方法中定義這個(gè)函數(shù)的內(nèi)容,這個(gè)函數(shù)的名字就是$name承載的值,而$args就是這個(gè)函數(shù)傳遞的參數(shù)。

<?php
class?Magic?{
??//__call方法,實(shí)例調(diào)用Magic類中未被定義的方法時(shí)執(zhí)行
??function?__call($name,$arguments)?{
????//判斷實(shí)例調(diào)用的是否是foo方法??
????if($name=='foo')?{
????????//如果是整形,則執(zhí)行私有方法foo_for_int?
????????if(is_int($arguments[0])){
????????????$this->foo_for_int($arguments[0]);
????????}
????????//如果是字符串,則調(diào)用私有方法foo_for_string
????????if(is_string($arguments[0])){
???????????$this->foo_for_string($arguments[0]);??
????????}??
????}??
??}???
??//兩個(gè)私有方法,實(shí)例不能直接調(diào)用
??private?function?foo_for_int($x)?{??
????print("參數(shù)是一個(gè)整數(shù)!");??
??}???
??private?function?foo_for_string($x)?{??
????print("參數(shù)是一個(gè)字符串!");??
??}??
}?
//生成一個(gè)實(shí)例$x
$x?=?new?Magic();
//參數(shù)不同,執(zhí)行的方法也不同??
$x->foo(3);??
$x->foo("3");??
?>

上面是一個(gè)__call方法使用的舉例,實(shí)例$x調(diào)用foo方法,類中沒有,執(zhí)行__call方法,__call方法則根據(jù)foo的參數(shù)不同,調(diào)用了類中的兩個(gè)私有方法,從而實(shí)現(xiàn)了函數(shù)的重載。

3 回復(fù) 有任何疑惑可以回復(fù)我~
#1

站在代碼的肩膀上 提問者

非常感謝!
2016-10-24 回復(fù) 有任何疑惑可以回復(fù)我~

感謝呀~ 我丟

0 回復(fù) 有任何疑惑可以回復(fù)我~

不應(yīng)該這么理解,php中的重載和java中的重載不是一個(gè)概念,在php中,重載應(yīng)該就是動(dòng)態(tài)創(chuàng)建和賦值

0 回復(fù) 有任何疑惑可以回復(fù)我~

回答得非常好,同感謝?。?!


0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
PHP進(jìn)階篇
  • 參與學(xué)習(xí)       181940    人
  • 解答問題       2668    個(gè)

輕松學(xué)習(xí)PHP中級(jí)課程,進(jìn)行全面了解,用PHP快速開發(fā)網(wǎng)站程序

進(jìn)入課程

沒搞懂呀,求解

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)