@Alk90
php, mysql, jquery, css, html, api

Правильно ли считать static методы глобальными вместе с их классами?

Всем привет! Прочитал документацию, но так и не понял. Если я создам класс со статическими методами и статическим параметром например вот так:
class Speedbar{

	private static $data = [];
	
	public static function getData(): array
	{
		return self::$data;
	}
	
	public static function setData(array $data): void
	{
		self::$data = $data;
	}
	
}


Получатся я могу его вызвать и изменять из любой части веб приложения? (с учетом автозагрузки классов)
Я пробовал и действительно где бы я не изменил параметр data, в любом файле php он остается уже измененным.
Тогда не понятно, для чего нужен singltone, если класс уже уникальный используя только static методы
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 2
Касательно Singltone.

Статические методы нельзя описать в интерфейсе, следовательно вы привязывается к конкретной реализации. С синглтоном такой проблемы нет.
UPD: как указали в комментах - всё таки это можно делать.

Статические методы труднее замокать для тестов. С синглтоном тут тоже всё будет проще.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Тогда не понятно, для чего нужен singleton, если класс уже уникальный используя только static методы

Очень старнный вопрос.

Синглтон не имеет отношения к состоянию класса, а только к количеству инстансов. У синглтона может быть только один. Это такой костыль для процедурного программирования, для тех кто не умеет в ООП.

При нормальном ООП синглтон не нужен, поскольку программист в состоянии контролировать, сколько и каких объектов у него создаётся, и не пытаться создавать новый объект если нужный уже создан.

Правильно ли считать static методы глобальными вместе с их классами?


Правильно. Это говнокод, за очень редкими исключениями.
Ответ написан
Ваш ответ на вопрос

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

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