PHP: Объясните, пожалуйста, один момент в объектно-ориентированном программировании
Пытался разобраться на примере класса, написанного другим программистом и увидел там такой синтаксис:
class Automobile
{
private XMLReader $transmission
private Autoloader $wheel
далее в классе методы
}
Что такое в данном случае XMLReader?
Я всегда в учебнике видел только подобное:
class Automobile
{
private $transmission
private $wheel
далее в классе методы
}
Гугление результатов не дало, так как, даже не знаю, что искать. Подскажите, пожалуйста, если кто-нибудь знает. Может, XMLReader или Autoloader - это какой-то особый вид комментария к свойству объекта?
Ответы (1 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Начиная с версии PHP 7.4 можно указывать типы не только у входных параметров методов и типы возвращаемых значений, но и у свойств класса
В типы входят следующие:
Тип Описание Версия
Имя класса/интерфейса - Значение должно представлять собой instanceof заданного класса или интерфейса.
self - Значение должно представлять собой instanceof того же класса, в котором используется объявление типа. Может использоваться только в классах.
parent - Значение должно представлять собой instanceof родительского класса, в котором используется объявление типа. Может использоваться только в классах.
array - Значение должно быть типа array.
callable - Значение должно быть корректным callable. Нельзя использовать в качестве объявления для свойств класса.
bool - Значение должно быть логического типа.
float - Значение должно быть числом с плавающей точкой.
int - Значение должно быть целым числом.
string - Значение должно быть строкой (тип string).
iterable - Значение может быть либо массивом (тип array), либо представлять собой instanceof Traversable. PHP 7.1.0
object - Значение должно быть объектом (тип object). PHP 7.2.0
mixed - Значение может иметь любой тип. PHP 8.0.0
В вашем случае это первый вариант: "Имя класса/интерфейса"