Цель абстрактного класса состоит в том, чтобы определить методы, которые 1) имеют смысл для других классов и 2) не имеют смысла, если не находятся в контексте одного из этих классов.
Чтобы перефразировать некоторые документы php, представьте, что вы подключаетесь к базе данных. Подключение к базе данных не имеет особого смысла, если у вас нет особой базы данных для подключения. Тем не менее, подключение - это то, что вы захотите делать независимо от типа базы данных. Следовательно, соединение может быть определено в абстрактном классе базы данных, унаследовано и сделано значимым, скажем, с помощью класса MYSQL.
Судя по вашим требованиям, вы не собираетесь этого делать, а просто требуете класс без экземпляра. Хотя вы можете использовать абстрактный класс для реализации этого поведения, мне это кажется хакерским, потому что оно злоупотребляет назначением абстрактных классов. Если я сталкиваюсь с абстрактным классом, я должен иметь разумные основания полагать, что, например, в нем будут присутствовать некоторые абстрактные методы, но в вашем классе их нет.
Таким образом, синглтон кажется лучшим вариантом.
Однако, если причина, по которой вы хотите иметь класс без экземпляра, заключается просто в том, что вы можете вызывать его где угодно, тогда почему у вас вообще есть класс? Почему бы просто не загрузить каждую переменную как глобальную, и тогда вы можете просто вызывать ее напрямую, а не через класс?
Я думаю, что лучший способ сделать это - создать экземпляр класса, а затем передать его с помощью внедрения зависимостей. Если вам лень это делать (и если честно, если честно, это ваш код, а не мой), тогда вообще не беспокойтесь о классе.
ОБНОВЛЕНИЕ: Кажется, что вы находитесь в противоречии между двумя потребностями: необходимостью делать что-то быстро и необходимостью делать все правильно. Если вы не заботитесь о том, чтобы нести тонну глобальных переменных ради экономии своего времени, вы, вероятно, предпочтете использовать абстрактные, а не одиночные, потому что это требует меньше ввода. Выберите, какая нужда вам важнее, и придерживайтесь ее.
Правильный путь здесь определенно состоит в том, чтобы не использовать Singleton или абстрактный класс, а вместо этого использовать внедрение зависимостей. Самый быстрый способ - получить тонну глобальных или абстрактных классов.