@Kirill-Gorelov
С ума с IT

Как из статичного метода вызвать динамичный?

Как в статичном методе вызвать класс логирования. Привожу супер упрощенный код.

<?php
// Enter your code here, enjoy!
class Logger
{
	public function log($test)
	{
		echo $test;
	}
}

class start
{
	private Logger $logger;
	
	public function __contructor(Logger $logger)
	{
		$this->logger = $logger;
	}
	public static function exec()
	{
		$this->logger->log('Привет');
	}
}

var_dump(start::exec());


Ругается на $this, что вполне логично, но и использование self не решает эту проблему((((
  • Вопрос задан
  • 57 просмотров
Пригласить эксперта
Ответы на вопрос 3
Убрать static? И создать экземпляр класса start?
Добавить статичное поле с Logger?
Создать экземпляр логгера на 1 раз?
Не понятно, какой результат в итоге хочется достичь.
Ответ написан
Комментировать
ddv88
@ddv88
Binance Futures
Привожу упрощенный ответ.
Static Factory например.
Хотя задача неясна.
Ответ написан
Комментировать
@rPman
Динамические методы при работе работают с экземпляром объекта (внутри это $this а снаружи эито то что перед '->'), а статические методы не имеют такого объекта и в таком случае нужно явно передавать его.

В твоем случае например добавить в метод static exec параметр $this (кстати не называй это так, чтобы путаницы не было) либо завести статичную переменную и хранить в ней в виде массива (или последний созданный, в общем под задачу) все экземпляры объекта.

p.s. весь смысл статичных методов - работа до того как экземпляр объекта создан, например создать его.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы