Задать вопрос
@vrazbros

Что плохого в статических функциях?

Недавно столкнулся с вопросом, который не совсем понимаю - Что плохого в статических функциях ?
  • Вопрос задан
  • 173 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@Yugh
Нельзя изменить значение, но зато они идеальны для инициализации значений, которые будут характеризовать элементы программы.

Ой, вы про функции, я думал переменные (константы)
Ответ написан
@MikUrrey
Статические блоки памяти (переменные, функции, методы, свойства) нужно использовать только тогда, когда вы понимаете, почему они у вас здесь и сейчас должны быть статическими.
Статические методы ругают за то, что они вызываются без инициализации класса и, соответственно, не взаимодействуют с другими его членами, что идет вразрез и с самой идеей ООП, и с практическими подходами вроде SOLID.
Часто статические методы применяются в составе хелперов, т. е. если класс используется как контейнер для методов (а, по сути, обычных функций), сгруппированных по смыслу, где не подразумевается создание объекта. Например,
namespace app\helpers;

class StringHelper
{

   public static function truncate($string)
   {
       //...
   }

   public static function capitalize($string)
   {
       //...
   }
}

Но такой подход тоже ругают :) Хотя бы потому, что с приходом пространств имен в PHP группировать и изолировать таким образом функции уже не нужно.
namespace app\helpers\string;

   function truncate($string)
   {
       //...
   }

   function capitalize($string)
   {
       //...
   }

- теперь вместо
\app\helpers\StringHelper::truncate($string);
используем
\app\helpers\string\truncate($string);
суть не меняется, но мусорный бак с набором "всякой всячины" превратился в аккуратный чемоданчик инструментов)

P. S.: как справедливо заметили коллеги по цеху, автозагрузки функций в PHP до сих пор нет. Поэтому такой подход остается "правильным" только теоретически, а на практике до сих пор используются "хэлперы"
Ответ написан
Ваш ответ на вопрос

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

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