Можно ли это переписать на ООП? И как примерно всё это можно распределить по классам?
У меня есть учебный проект (доска объявлений) и сейчас я переделываю структуру кода из процедурного в функциональный, в результате у меня образуются примерно такие группы функций: function_items.php - всё что связано с записью в базу и выводом объявлений и операций с ними (например добавить в избранные) function_users.php - всё что связано с пользователями, регистрация, вход, редактирования личной инфы и пр. function_images.php - все операции с картинками, ресайз, обрезка, и пр.
И так далее разбиваю на группы функций.
Так вот, в плане обучения обязательно нужно освоить ООП (хотя бы основы но не на примерах машин и самолетов, а на живом коде) и я думаю как теперь это можно переделать в классы?
То есть, у меня, например, вместо файла function_items.php будет Class Items и всё что в этом файле будет в одном классе, так?
Но мне кажется, что мой код ещё не достаточно сложен чтобы его превращать в классы (классы это просто способ организации кода насколько я понимаю).
То есть, мне здесь пока ни к чему Инкапсуляция, Наследование и Полиморфизм, просто нет такой необходимости, или всё же есть? Прошу помочь в понимании нужно ли ООП в простых проектах или так и оставить в виде отдельных функций?
Konata Izumi, у меня весь код был в одном файле. То есть и код контроллера который определяет что я хочу и код вывода всё в одном одной простынёй. Например в items.php был код который выводит все объявления, код который выводит одно объявление детально, код вывода в зависимости от категории и так далее, и тут же код контроллера который в зависимости от запроса запускал нужный кусок кода и всё это в одном файле.
Антон Р., тоже раньше путал их.
А насчет ООП - можно попробовать выделить из кода сущности и организовать "общение" между ними.
Без кода точнее не подскажу.
Антон Р., для начала начните с того, чтоб код и хтмл не были в перемешку, забудьте про конструкцию echo. Все функции и методы должны возвращать данные через return. Начать пользоваться шаблонизатором
Антон Р., это если у вас нативный шаблонизатор, если шаблонизатор у вас компилит шаблоны, то echo вообще не нужно, то есть данные кидаются в шаблон и они выводятся без echo, так как заменяются placeholder , данными. Но правда придётся ещё и синтаксис новый учить. Ну и есть короткая запись
<?=$var?>
Попробуйте натянуть этот функционал на несложный фреймворк вроде laravel - да, он не идеальный, но как по мне лучше начать делать хоть как-то, а потом постепенно разбираться, как писать ООП красиво.
Items, users, images - могут стать классами моделей, где описаны их свойства и методы для их получения/записи.
Из function_images можно написать модуль (условно говоря папочку с набором классов-сервисов), где будет описана логика ресайза отдельно, логика обрезки отдельно и т.д.
классы это просто способ организации кода насколько я понимаю
нет. вообще не правильно понимаешь.
Я тебе уже советовал читать Фаулера, ты это сделал? Ты задаешь одни и те же вопросы, на которые в принципе никто не сможет тебе ответить - это тема целой книги. Все советы тут будут лишь медвежьей услугой.
У тебя два пути:
1. Брать фреймворк и писать с нуля
2. Читать книгу и изобретать велосипед, переписывая свою лапшу на оо-стиль. Прокачаешься, но времени потратишь оооочень много, что будет крайне сомнительным действием в плане профита.
Хотя вот так посмотришь на платные курсы, так там после изучения основ php практически сразу прыгают к изучению ООП, взять тот же GeekBrains, вот программа: (знаю что это очень "попсовые" курсы но как пример)
Урок 1. ООП в PHP. Базовые понятия.
Введение в парадигму ООП, знакомство с фундаментальными понятиями и принципами. Реализация ООП в PHP.
Урок 2. ООП в PHP. Расширенное изучение.
Продолжение изучения ООП и его реализации в PHP. Архитектурные аспекты ООП. Магические методы, контроль типов, трейты, паттерны.
Урок 3. Шаблонизаторы
Понятие шаблонизаторов. Знакомство с Twig. Реализации функционала шаблонизатора. Исключения в PHP.
Урок 4. Углубленное проектирование реляционных БД.
Продолжение знакомства с симбиозом MySQL и PHP. Понятие нормализации данных, различные формы нормализации. Связи в БД. Резервное копирование данных и оптимизация производительности БД. Знакомство с механизмом транзакций.
Урок 5. Парадигма MVC. Обновления движка
Знакомство с парадигмой-паттерном «Model-View-Controller». Обновление архитектуры системы. Стандартизация кода.
Урок 6. Практика
Применение на практике знаний, полученных на курсе. Мастер-класс по созданию модулей и отладке кода.
Урок 7. Тестирование. PHPUnit.
Введение в принципы тестирования, TDD, BDD. Знакомство с PHPUnit, написание тестов.
Урок 8. Развитие карьеры разработчика. Инструменты и необходимые знания
Обзор тенденций современного программирования и разработки на PHP. Знакомство с полезными инструментами. Обсуждение дальнейшего развития.
Антон Р., Можно.
Всё равно для начала стоит ознакомиться. Посмотреть на курсхантерс пару первых уроков (есть онлайн просмотрщик).
У Елисеева специфичный формат: долгие изнурительные вебинары (по 4-5 часов) с подробным разбором всего и вся.
Поддержать автора рублем всегда успеете.
например вместо файла function_items.php будет Class Items и всё что в этом файле будет в одном классе, так?
Нет, совсем не так, но для начала можете и так попробовать. Затем берите любой популярный фреймворк и пробуйте в нем, заодно изучай как реализует те или иные вещи фреймворк.
Но это тогда, когда будете хорошо знать процедурный программирование.