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

В вашем случае это первый вариант: "Имя класса/интерфейса"

→ Ссылка