Привет мужики. Вопрос немного философский, но очень важный для меня. С начальником тут спор возник.
Я сайты пишу модулями/блоками, каждый блок это - функция (шапка, контент, футер, сайдбар, модули ссылок css и js, модуль формы связи, модуль новостей и тд.).
Вызывается index.php подключаются все файлы функций, формируется контент и встраивается в html шаблон. Какие-то функции получают переменные, какие-то нет, типа статичны. Начальник говорит, чтоб я обернул в классы все свои функции. Просит создать вместо 7 функций - 7 классов. Говорит, привыкай к классам, но я не очень нахожу в данном случае им применение. Насколько актуальна его просьба и зачем усложнять и так рабочий стиль программирования? Мои функции все равно не пересекаются с именами других, тк имеют уникальный префикс, расширяются легко, добавлением входных переменных. Единственно, они работают по принципу сверху-вниз. Иногда хочется переменную объявить в футере и передать в шапку, но это бывает очень редко (тут думаю класс помог бы)
Тоже было и с отдельным модулем, попросил создать калькулятор для сайта, сложный. Я сделал, обернул в одну функцию и ему сказал, что вызывается модуль recure_once('modul_calc/calc.php') и объявлением функции в нужном месте сайта echo calc();, всего две строки. А ему снова лучше класс. Чем плохо? Или мой такой стиль и правда не айс?
Спасибо за советы, мужики. Спорить не стану, согласен со всеми. Видимо я как-то увлекся функциями, что классы миновал. По сути-то, у меня каждая функция и отвечала за какой-то объект/сущность на сайте. Начиная от шапки, блоком товара в магазине, заканчивая модулями, формами и тд.
Почти все статичные функции имеют вид:
function block_header()
{
ob_start();
//Тело функции
$buffer = ob_get_contents();
ob_end_clean();
return $buffer;
}
Они и выглядят-то как объекты. Другое дело, я пока не вник в пользу наследований и тд..
Уже накодил не мало строк на ООП5. Думаю разберусь постепенно.
Говорит, привыкай к классам, но я не очень нахожу в данном случае им применение.
Конечно. Потому что ты не знаешь для чего они нужны, ты еще не умеешь мыслить объектами и начальник твой все же в большей степени прав. ООП надо понимать и знать. Читай книгу "гради буч объектно-ориентированный анализ и проектирование скачать pdf"
Просит создать вместо 7 функций - 7 классов.
может 7 методов? неужели все функции настолько разного назначения?
ООП - это не просто обернуть функцию в класс, это иное мышление, иной подход и абсолютно верный и единственный в программировании, ибо все что нас окружает - офис, твой начальник, город, вселенная - все построено по объектно-ориентированному принципу.
Мои функции все равно не пересекаются с именами других, тк имеют уникальный префикс
Вот этот твой уникальный префикс - это и есть попытка уйти в сторону ООП. До тебя начинает доходить, но без прочтения теории может дойти не скоро.
зачем усложнять
готов поспорить, твой код и так сложен, даже без классов.
напишите функцию, которая берет файл с кодом php и перегоняет все отдельные функции в классы и наоборот. а вообще если аргумент начальника в том, чтобы вы учились новому, то я с ним соглашусь
Тоже раньше не понимал зачем нужны классы и ООП если и так всё работает. Попытки вникнуть в тему по статьям, приводимым в инете (объснения на каких то стульях, столах, человеках, студентах и т.д.) результата не давали.
Потом просто попробовал что то написать с применением ООП. Что то мелкое... Поверхностно освоил наследование, конструкторы, статические методы и т.д. Когда писал мало задумывался о результате и удивился, когда всё заработало с первого раза как надо! До этого приходилось долго вылавливать логические ошибки и отлаживать.
Потом по живому коду других людей понял как надо писать ООП. Начал развивать в себе это объектное понимание и заметил что реально код содержит в разы меньше ошибок, неточностей и, если что то идет не так, то я примерно понимаю где произошла ошибка.
Так что просто начните использовать ООП и сами поймёте зачем оно нужно, но вначале, надо себя заставить ;)
Функции и подключение модулей через recure_once давно уже никто не использует. Даже если обернуть ваши функции в класс - ничего общего с ООП это иметь не будет. И то, как пишете вы, и то, что предлагает вам начальник - быдлокод.
Вам следует попробовать один из современных MVC фреймворков - symfony 3, yii 2 или laravel. Посмотреть как там всё устроено. То, как вы сейчас пишите будете вспоминать как страшный сон.
Осадили вы меня)) Для меня важно, то, что генерирует финально php, то что делает потом посетитель и как подана инфа, в том числе и "под капотом". Быдлокод, вроде как - это когда не сразу понимаешь, что и как написано. Особенно если туда добавляется корявость вперемешку с брутальным г-кодом. У меня очень понятный код. Я честно ЗА новые методы и улучшения. Пока что классы учу не особо понимая, для чего они нужны, просто решил, что на первое время это будет данность. Кстати я уже оборачиваю свои функции и даж что-то наследую))) Как бы с Ооп не пришлось попрощаться почти с тремя нулями после запятой в скорости генерации целых магазов, а то посмотришь некоторые фрэймворки или cms, так становится жаль супер проф коллег. Вроде и делают "сильно", вот тока кроме них мало кто это оценивает. Мне один такой профи дал совет и кстати хороший. Сказал, иногда нужно делать класс, иногда функцию. Нельзя все делать по одному, это не профессионально. Я верю)
maximka787: вы не понимаете ценность классов, потому что не писали реально сложные проекты и не поддерживали их после этого. Посмотрите насколько просто работать с MVC фреймворками, и как просто после этого поддерживать проект, если он разрастается, по сравнению с процедурным стилем.
Там подробно объясняются все требования к качественному ПО и то, как можно выполнить все эти требования с помощью ООП, и почему нельзя, например, процедурным стилем.