Можно ли задать тип переменной экземпляра в php? Привет! Сами мы в php не местные, без типизации свойств объекта непривычно. По этому прошу: помогите чем можете. Допустим есть у меня класс MyClass и еще одни класс - MyAnotherClass, в котором есть переменная $myClassInstance. Так вот хотелось бы этой самой переменной жестко задать тип MyClass что бы потом самому, своими кривыми руками, случайно не присвоить ошибочное значение. Я представляю как это можно сделать написав свои геттер и сеттер, но хотелось бы обойтись без преферанса и балерин. Заранее спасибо!
Да, в PHP начиная с версии 7.4 можно задать тип переменной класса в свойствах объекта. Например, в вашем случае вы можете объявить переменную $myClassInstance в классе MyAnotherClass и указать тип MyClass для неё, как показано ниже:
class MyAnotherClass { private MyClass $myClassInstance; public function setMyClassInstance(MyClass $myClassInstance): void { $this->myClassInstance = $myClassInstance; } public function getMyClassInstance(): MyClass { return $this->myClassInstance; } } class MyClass { // код вашего класса MyClass } $myClassInstance = new MyClass(); $anotherClass = new MyAnotherClass(); $anotherClass->setMyClassInstance($myClassInstance);
Таким образом, переменная $myClassInstance будет иметь тип MyClass и вы сможете избежать присвоения ошибочного значения.
Да, в PHP начиная с версии 7.4 можно задать тип переменной класса в свойствах объекта. Например, в вашем случае вы можете объявить переменную $myClassInstance в классе MyAnotherClass и указать тип MyClass для неё, как показано ниже:
class MyAnotherClass {private MyClass $myClassInstance;
public function setMyClassInstance(MyClass $myClassInstance): void {
$this->myClassInstance = $myClassInstance;
}
public function getMyClassInstance(): MyClass {
return $this->myClassInstance;
}
}
class MyClass {
// код вашего класса MyClass
}
$myClassInstance = new MyClass();
$anotherClass = new MyAnotherClass();
$anotherClass->setMyClassInstance($myClassInstance);
Таким образом, переменная $myClassInstance будет иметь тип MyClass и вы сможете избежать присвоения ошибочного значения.