2017-08-13 62 views
0

在這裏的建議,我已經嘗試學習oop php。我通過社交媒體的例子發現了一個顯示真實世界實現的網站,我正在閱讀和大部分時間都在進行跟蹤。但是我碰到了,this page上可能只是一種替代語法。當你作爲一個參數傳遞時,你可以隱式地創建一個對象嗎?

我的問題是關於什麼似乎是從一個類的對象,作爲參數傳遞給另一個類的方法。我通過其他一些類似性質的stackoverflow問題閱讀,但只有this one表現出類似的語法,但只有在回答另一個問題時才提出,而不是討論我特別提出的問題(位於答案中)。

要清楚,從第一個鏈接頁面摘錄一段代碼;

public function getFriend(Relationship $rel) { 
    if ($rel->getUserOne()->getUserId() === $this->loggedInUser->getUserId()) { 
     $friend = $rel->getUserTwo(); 
    } else { 
     $friend = $rel->getUserOne(); 
    } 

    return $friend; 
    } 

方法getFriend距離關係類。和該方法的參數關係$ rel我相信是一個關係類的實例。然而沒有

$rel = new Relationship 

任何地方。這是通過引用傳遞一個對象?我知道這是一個新手問題,所以謝謝,是的,我看過手冊的objects and classes部分,所以如果我不看手冊的正確部分,並且可以給我一個正確方向的指針,謝謝。

回答

1

看來,如果引用一些所謂類型暗示的函數參數類型聲明

http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration

基本上這是什麼做的,是它要求的變量是鍵入Relationship。如果您嘗試將任何其他類型的變量傳遞給此方法,您將會遇到致命錯誤(PHP 5)或異常(PHP 7)。

+0

所以即使{$ rel}不是已經是一個類的實例化,這個工作嗎?是否因爲對象已經存儲在內存中? – user74091

+0

或者我相信你是對的,但你能詳細說明一下嗎? – user74091

+1

對象$ rel必須已經被實例化並且具有Relationship類型才能傳遞給此方法。這不會實例化任何東西。它只是幾天「所有變量不是類型關係,在這裏不受歡迎」。 – DrDamnit

相關問題