Функции против статических методов

У меня есть несколько функций, связанных с куки файлами. Было бы ужасной идеей группировать их, переместив их в собственный класс и использовать в качестве статических методов?

Функции:

function cookie_get(){}
function cookie_set(){}
function cookie_delete(){}

Статические методы:

class cookie
{
    static function get(){}
    static function set(){}
    static function delete(){}
}

Ответы

Ответ 1

Да, это была бы ужасная идея, потому что статические методы трудно тестировать и макетировать. Почему бы просто не создать настоящий класс Cookie, который можно настроить во время выполнения с помощью этих методов в качестве обычных методов.

Если вы просто хотите сгруппировать эти функции в пакет, вы также можете использовать пространство имен.


Изменить. Поскольку вы внесли это в комментарии: да, для любых целей тестирования регулярные функции являются такими же неустойчивыми, как статика. Таким образом, ваша первоначальная ситуация "ужасна", как изменение ее для использования статического класса. Даже псевдопространство не дает вам никаких преимуществ, потому что вы уже применили это к своим обычным функциям. cookie_get является таким же хорошим или плохим, как Cookie::get.

Ответ 2

Было бы замечательной идеей, если вы полностью осознаете предостережения. Это называется "Утилита" :

Хорошие кандидаты на служебные классы являются удобными методами, которые могут быть сгруппированы функционально.

Ответ 3

На самом деле хорошая практика - организовать такие функции. Современной альтернативой было бы использовать namespace.

Ответ 4

Это будет отличный способ организовать ваш код, но зачем использовать статические функции, просто создайте класс для требуемой функциональности.

Или, как сказано выше, используйте пространства имен, но я не особенно знаком с их плюсами/минусами.

$cookie->get() лучше работать с cookie_get() по-моему