В конечном итоге процедурально можно справится абсолютно с любой задачей, но гори оно проподом, когда для этог имеются удобства OOP.
Так обычно говорят люди, которые никогда не видели других языков, кроме PHP. Или привыкли, что нужно както решать проблемы несовершенства языка костылями (в данном случае классами).
Я имею ввиду противопоставление крайностей. Либо ООП, либо процедурка. Это идет из того, что PHP еще только развивается, и не всегда предоставляет адекватные инструменты. Но развивается он не в сторону "всё на ООП", а как раз наоборот. Сейчас попробую объяснить.
Сначала мнение, что класс удобнее функций шло от того, что функции можно было объявить только в глобальной области видимости. Железным аргументом адептов ООП было как раз разграничение областей видимости, дабы уберечся от совпадения имен. Потом появились немспейсы, и этот аргумент потерял смысл.
Вторым аргументом является автозагрузка. В PHP нет механизма автозагрузки функций из файла. Это предлагалось, но было отвергнуто по причине сложности реализации и отсутствию острой необходимости. Размещать одну функцию в отдельном файле в подавляющем большинстве случаев контрпродуктивно.
А теперь с этой точки зрения рассмотрим класс. С точки зрения, что нам понадобился функционал, который помещается в один метод. Какие есть у класса перимущества перед функцией? Автозагрузка? Давайте посмотрим. Сравним:
include 'черт\знает\где\находится\Функция.php'; echo черт\знает\где\находится\Функция();
В чем сакраментальная разница? Все те же две строчки. Немного больше букв, но это обманчивое впечатление. Да, можно конечно использовать статику, но не всем адептам это нравится, а главное не в этом. А в завуалированном функционале. В автозагрузчике. И если это чистое ООП, то придется задействовать еще один класс - автозагрузки. А если это, как любит выражаться chee, сопутствующие технологии, то целый композер.
Плюс многословность. В ООП функция должна быть обернута в класс. И в итоге получается ОПП многословнее, но главное это удар по оптимальности. Класс требует больших накладных расходов.
Всё это справедливо не только в случае с одним методом в классе. А почти всегда, когда используется модель stateless.
Теперь дальше. Предвижу, что скажет Santehnick. Что то вроде этого:
Цитата (Santehnick @ 1.02.2016 - 09:10)
Там хоть что-нибудь можно задекорировать? Или реализацию подменить?
Но это же грубейшее нарушение принципа YAGNI, который как раз адептами ООП и пропогандируется. Так рассуждают люди, которые ставят на ночь два стакана. С водой и пустой. Первый - вдруг захочется пить, а второй - вдруг не захочется.
Теперь вернемся к тому, что такие заблуждения (ООП всегда удобнее процедурки) свойственны в основном PHP программистам. В том же Python очень активно используются вместо классов модули (по месту конечно, не везде). И никого это не коробит. Больше скажу - это очень приветствуется, так как отвечает Дзену Питона.
Цитата
Простое лучше сложного Плоское лучше вложенного
Попытка все представить объектами, это как попытка разговаривать одними существительными. Там, где можно просто сказать "привет, мир" адепты говорят "Вот Привет. Он горячий. Вот Мир. Миру - Привет". А ведь немудрено его и потерять. :)
_____________ Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.
Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.
Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.