public function setAlbumTable(AlbumTable $albumTable)
{
$this->albumTable = $albumTable;
return $this;
}
我說的是第一個參數(它不是參數btw)看起來像數據類型?它是什麼 ?不變 ?我試圖在zend框架中開發應用程序時遇到此問題2這是ZF2常量var或數據類型
public function setAlbumTable(AlbumTable $albumTable)
{
$this->albumTable = $albumTable;
return $this;
}
我說的是第一個參數(它不是參數btw)看起來像數據類型?它是什麼 ?不變 ?我試圖在zend框架中開發應用程序時遇到此問題2這是ZF2常量var或數據類型
這是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
它強制實際參數($ albumTable)是一個AlbumTable類的實例。如果有任何其他內容傳遞給函數,PHP將發生致命錯誤。
這很有用,所以你不必檢查你收到什麼類型的變量/對象,以便利用它的功能和屬性。
你展示的這段代碼是通過setter方法進行依賴注入的一個例子。 setter被傳遞給一個AlbumTable的實例,並將這個實例分配給一個class字段。
您的方法僅傳遞一個參數:$albumTable
。
參數爲type hint之前的AlbumTable
並確保只有一個AlbumTable或派生類的實例可以傳遞給setter。