atis2345
@atis2345
PHP developer

Почему в автозагрузчик 2 раза бросается вызов класса?

namespace base\libs;

class User
{
	use patterns\Singleton;

	public function getData()
	{

	}
}

namespace base\patterns;

trait Singleton
{
	static private $instance;

	private function __construct() {}
	private function __clone() {}
	private function __wakeup() {}

	static public function getInstance()
	{
		if (empty(static::$instance)) {
			static::$instance = new static();
		}

		return static::$instance;
	}
}

namespace base;

$User = libs\User::getInstance();
$User->getData();


при выполнении этого кода autholoader вызывается 3 раза!
1. base\libs\User
2. base\patterns\Singleton
3. Singleton !!!

Никак не могу понять когда вызывается 3 запрос?

P.S. Даже если я меняю use patterns\Singleton; на use \base\patterns\Singleton; у меня все равно 3 вызова.
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
atis2345
@atis2345 Автор вопроса
PHP developer
Решение тут.
Читать внимательно!!
www.php-fig.org/psr/psr-4/ru
https://github.com/php-fig/fig-standards/blob/mast...
И да простят все джуниора)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
miraage
@miraage
Старый прогер
У вас всё это в одном файле? Уууу, я вас умоляю....

https://getcomposer.org/doc/04-schema.md#autoload

И вообще, внимательно ознакомтесь со всеми PSR стандартами.
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Не знаю, имеет ли это отношение к проблеме, но должно быть так:
use base\patterns\Singleton;
Ответ написан
Я думаю, что по этому:
use patterns\Singleton;

namespace base\patterns;

Попробуйте вместо use patterns\Singleton;
Написать use base\patterns\singleton;
Ответ написан
Ваш ответ на вопрос

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

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