2012-03-10 27 views
0
public function setAlbumTable(AlbumTable $albumTable) 
{ 
$this->albumTable = $albumTable; 
return $this; 
} 

我說的是第一個參數(它不是參數btw)看起來像數據類型?它是什麼 ?不變 ?我試圖在zend框架中開發應用程序時遇到此問題2這是ZF2常量var或數據類型

回答

1

這是PHP's type hinting。這意味着此功能的第一個參數 - $albumTable - 必須是AlbumTable類的實例或從其繼承的類。

class Car {} 

class BlueCar extends Car {} 

function drive_the_car(Car $car) {} 

drive_the_car(42); // error, first parameter must be an instance of Car 

drive_the_car(new stdClass()); // error 

drive_the_car(new Car()); // works 

drive_the_car(new BlueCar()); // works 
0

它強制實際參數($ albumTable)是一個AlbumTable類的實例。如果有任何其他內容傳遞給函數,PHP將發生致命錯誤。

這很有用,所以你不必檢查你收到什麼類型的變量/對象,以便利用它的功能和屬性。

1

你展示的這段代碼是通過setter方法進行依賴注入的一個例子。 setter被傳遞給一個AlbumTable的實例,並將這個實例分配給一個class字段。

您的方法僅傳遞一個參數:$albumTable

參數爲type hint之前的AlbumTable並確保只有一個AlbumTable或派生類的實例可以傳遞給setter。