Ist dieser ZF2-Konstante Var oder Datentyp
-
10-12-2019 - |
Frage
Ich spreche über den ersten Parameter (es ist kein Parameter BTW) sieht aus wie Datatype?Was ist es ?konstant?Ich stoße darauf, wenn ich versuche, die App in Zend Framework 2 zu entwickeln
Lösung
This is PHP's type hinting. It means that the first parameter to this function - $albumTable
- must be an instance of the AlbumTable
class or a class that inherits from it.
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
Andere Tipps
The piece of code you're showing is an example of dependency injection via setter method. The setter is passed an instance of AlbumTable and assignes this instance to a class field.
Your method is passed ONLY ONE parameter: $albumTable
.
The AlbumTable
before the parameter is a type hint and makes sure that only a instance of AlbumTable or a deriving class can be passed to the setter.
It forces the actual parameter ($albumTable) to be an instance of AlbumTable class. PHP will give a fatal error if anything else is passed to the function.
This is useful so you don't have to check what type of variable/object you received in order to make use of it's functions and properties.