Как вызвать метод из другого класса минуя конструктор в PHP?
При попытке вызвать статический метод другого класса, вызывается его конструктор. Как можно его вызвать, и как вызвать не статический метод также минуя конструктор(если возможно...)
class Test{
public function __construct(Data $data){
echo $data;
}
public static function getId(){
return "Типо id";
}
}
class NoTest{
$text = Test::getId(); // вызывает конструктор => приводит к ошибке
echo $text;
}
Ответы (1 шт):
Автор решения: MyZik
→ Ссылка
Статический метод ничего не знает о конструкторе и может быть вызван откуда угодно. У Вас ошибка в Вашем классе NoTest, перенесите это:
$text = Test::getId(); // вызывает конструктор => приводит к ошибке
echo $text;
в отдельный метод и увидите, что всё работает:
class Data {}
class Test
{
public function __construct(Data $data) {
echo $data;
}
public static function getId() {
return "Типо id";
}
}
class NoTest {
public function getNoTestData() {
print_r(Test::getId());
}
}
$noTestObject = new NoTest();
print_r($noTestObject->getNoTestData()); // Выведет "Типо id"
print_r(Test::getId()); // Выведет "Типо id"