Это типизация.
Список параметров должен быть разделен запятыми. Это стоит перед параметром и объявляет тип параметра.
Ваш пример typehint предназначен для объекта класса ShopProduct
.
Значение: если было передано что-то еще, например целое число или массив, метод выдал бы исключение. (Это отражает наследование. Предположим, что существует экземпляр SpecificShopProduct
, класса, который будет расширять ShopProduct
, вы также можете передать его.)
Можно указать объекты и массив, класс или интерфейс. Невозможно указать обычные типы переменных, такие как целые числа или строки, и вы не можете указать тип массива объектов.
public function foo(array someArray, LoggerInterface $logger)
{
}
Тем не менее, для некоторых других типов вы можете использовать комментарии phpDoc, хотя они предназначены для удобочитаемости и поддержки IDE, они не будут навязывать тип; это означает, что вам нужно будет проверить для себя, что был передан правильный тип.
/**
* @param ShopProductWriter[] arrayOfObjects
* @param int $someInt
* @param string $someString
*/
public function foo(array arrayOfObjects, $someInt, $someString)
{
}
person
k0pernikus
schedule
01.12.2015