類中函數的參數能指定為類的屬性嗎

來源:互聯網
上載者:User
看到一個代碼,說是類中的usbUSB函數的參數之一可以是上面的USB這個介面作為參數,,沒聽說過PHP函數中的參數這麼使用呢,道理何在?


回複討論(解決方案)

function useUSB( USB $usb)
這個 USB 是型別宣告,如果 $usb 不是 USB 類型的話,將會有文法錯

function useUSB( USB $usb)
這個 USB 是型別宣告,如果 $usb 不是 USB 類型的話,將會有文法錯


如果是這樣,這真顛覆我對函數參數的理解,我的理解是,函數的參數就是一個變數,可以是任意值,並且沒有類型的限制。

如果是顛覆了你的理解的話,那隻能說明你的理解是有問題的
所以不是顛覆而應是增強了理解
比如 USB 類有一個 load 方法,而你
function useUSB($usb) {
$usb->load();
}
這樣定義,這樣調用 $obj->useUSB('abc');
這就會在 $usb->load() 處出現 不存在 load 方法 的錯誤
於是你就需要在 $usb->load() 之前檢查 $usb 是否是對象;是否存在 load 方法
而加上型別宣告後,這個檢查工作就由 php 解析器去完成了

你還是沒有理解我所說的問題,我的意思是說函數useUSB這個函數中的第一個參數USB是介面類USB,我不理解的是這裡,怎麼函數的參數會是一個類呢?我從很多教程中所看到的,函數中的參數就是一個可量,你定義為多少,一調用就出來了,可是這個類,是怎麼回事呢,很多教程中壓根沒有提到。就是舉一反三吧,感覺也不可思議。我不理解的是這裡。

是你沒有理解我說的意思!
函數的參數是以逗號分隔的
而 USB $usb 間有逗號嗎?
顯然是沒有的,那麼 USB $usb 就是一個參數了

你還是沒有理解我所說的問題,我的意思是說函數useUSB這個函數中的第一個參數USB是介面類USB,我不理解的是這裡,怎麼函數的參數會是一個類呢?我從很多教程中所看到的,函數中的參數就是一個可量,你定義為多少,一調用就出來了,可是這個類,是怎麼回事呢,很多教程中壓根沒有提到。就是舉一反三吧,感覺也不可思議。我不理解的是這裡。



function use( USB $usb){}
$usb是由USB類執行個體化的一個對象指標
比如 $usb1 = USB(); $usb2 = USB(); use($usb1); use($usb2);

有點開竅了,通過二位的解答,正下有點領悟,不知我這樣理解對不,函數中的()裡就是一個運算式,這個運算式中可以用聲明類的方法,比如我這個例子中USB $usb,是不是等價於$usb=new USB

這個例子中USB $usb
表示的是 $usb 必須是類 USB 或繼承於 USB 的某個類的執行個體

這個例子中USB $usb
表示的是 $usb 必須是類 USB 或繼承於 USB 的某個類的執行個體


$usb可以是usb的屬性或方法嗎???

不可以,必須是執行個體

function use(USB $usb) { }
相當於
function use($usb) {
if(! is_a($usb, 'USB')) return 'error';
}

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.