Где найти книги или курсы по PHP, где даётся проектирование приложений с учётом ООП?
Давно использую PHP в работе, но никогда не писал самостоятельно что-то по-настоящему серьёзное. Знаю основы ООП, знаю концепции MVC, понимаю как работают популярные фреймворки типа Yii и Laravel и даже часто на них делаю какие-то проекты. Но вот если мне поставить задачу написать какой-нибудь парсер или систему анализа данных, я её напишу, но это будет куча говнокода, работающего, но абсолютно не расширяемого в дальнейшем. Потому что, как читать использовать ООП-код я знаю, а вот как проектировать и писать его - к сожалению, нет. Зачастую, если встречается какая-то задача, я пишу кучу функций в процедурном стиле, где много чего дублируется и...хорошо, что работает вообще.
Возможно, кто-нибудь встречал какие-то книги или курсы, где показывалась бы разница при решении задач между процедурным кодом и ООП? Хочется на конкретных примерах почуствовать, почему соорудить некий интерфейс и классы с методами будет проще и оптимальнее, чем в тысячный раз говнокодить? В сети много информации, разжёвывающих саму суть ООП с её инкапсуляциями и полиморфизмом, но вот конкретных примеров, почему писать, как я сейчас пишу, это малоэффективно, и что надо изменить в своей голове, чтобы перестать начинать решать задачу с написания очередной функции, - я практически не встречал. Возможно, встречали вы...
BarneyGumble, Пытаюсь решить похожую проблему для себя. Я решил что буду писать проекты и когда мне кажется что я уже пишу плохо то проанализировать что пошло не так, как можно этого избежать и спросить у более опытных как решить конкретные проблемы (надеюсь со временем вопросов будет меньше).
P.S.: надеюсь что на маленьких проектаху вас нет ощущение что пишите плохо.
Uneasy Hearts Weigh the Most, Есть namespaces, они работают не только для классов, но и для функций, поэтому совсем не нужно всё скидывать в общий global scope. Правда для функций нет механизма autoload'а, поэтому нужен require, но у модулей он тоже должен быть. Понятно, что это не прям полноценные модули, но не всё так плохо.
По поводу написания чего-то больше hello world в процедурном стиле: посмотрите например на Drupal 7, там на 7 с лишним мегабайт кода в базовой поставке всего 81 класс (специально посчитал) из которых почти все относятся к работе с базой данных и кэшу. Всё остальное - именно в процедурном стиле и это весьма мощная и популярная CMS.
Мне в свое время помогла проработка всех шаблонов проектирования из трех источников: "Head First Design Patterns"+refactoring.guru+designpatternsphp.readthedocs.io. Каждый шаблон разбирала и пыталась понять, почему здесь нужен паттерн, а не процедурный код, обернутый в один класс. Еще помогла книга по чистой архитектуре, но она зашла уже после паттернов. Просто важно полностью для себя понять, почему эти подходы до сих пор существуют и находить для себя два-три примера, потому что один-единственный пример для изучения может быть однобоким и даже неправильным.
Также эти книги и темы помогают вылечиться от трудностей решения задач на фреймворках, потому что наконец-то начинаешь видеть всю структуру и взаимодействия модулей и классов, а не просто примеры из документации натягиваешь на бизнес-требования)
Друг, Паттерны это не про ООП, это про шаблонное решение типичных задач, которые повторяются из ряда в ряд. Просто паттерны крайне полезны, потому что в командной работе над большим проектом тимлид может сказать новичку, что "эту задачу решай через паттерн x" и за минуту дать понять по какой архитектуре будет написан компонент или часть кода, а не тратить часы на это - ведь понимание хорошей архитектуры приходит с многолетним опытом.
Ну а то, что для конкретных паттернов в разных языках есть ООП примеры, учебники и так далее - это чтобы новичок, который пришел в ИТ, их знал и мог сразу приступить к работе, даже не всегда понимая почему этот паттерн в данном случае лучше чем тот.
Вам не нужно сравнение процедурщины с ООП, вам нужно нормальное понимание ООП.
Для этого, например, подойдут классические "Рефакторинг" Фаулера или "Совершенный код" Макконнелла.
Эх дружище, так я тебя понимаю......
Но сколько бы я сам книг не прочитал, курсов не пересмотрел, тут дело в одной штуке, опыт.
Который приходит только через боль, пот, мучения, стыд, страдания, несколько лет ужасного кода и потом будет приходить видение как сделать классно и правильно, потому что пока ты все это на себе испытаешь ты очень многому научишься.
Поэтому продолжай читать, писать, учиться и все придет само собой.