Можно ли задать тип переменной экземпляра в 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=newMyAnotherClass();anotherClass = new MyAnotherClass(); anotherClass=newMyAnotherClass();anotherClass->setMyClassInstance(myClassInstance);</code></pre><p>Такимобразом,переменнаяmyClassInstance);</code></pre><p>Таким образом, переменная myClassInstance);</code></pre><p>Такимобразом,переменная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=newMyAnotherClass();anotherClass = new MyAnotherClass();
anotherClass=newMyAnotherClass();anotherClass->setMyClassInstance(myClassInstance);</code></pre><p>Такимобразом,переменнаяmyClassInstance);</code></pre><p>Таким образом, переменная myClassInstance);</code></pre><p>Такимобразом,переменнаяmyClassInstance будет иметь тип MyClass и вы сможете избежать присвоения ошибочного значения.