Я пишу PHP без "классов" в течение многих лет... что мне не хватает?
В моей жизни я не могу окунуться в "классы" на PHP.
Мне удалось написать большие, масштабируемые и популярные сайты без них.
Что мне не хватает? (И как я узнаю?)
Ответы
Ответ 1
Классы помогут с повторным использованием кода и потенциально очень структурированным приложением.
Процедурное программирование может быть намного быстрее как во время разработки, так и в скорости выполнения.
Программирование OO - это более простой способ, но не всегда лучший способ. Это книга под названием PHP Objects, Patterns and Practice, которая очень хорошо читается, она охватывает основы классов, почему и как использовать, абстракции и общие шаблоны проектирования, такие как MVC. Он также охватывает модульное тестирование и другие очень хорошие практики для разработчиков php.
Ответ 2
Точка классов (объектно-ориентированное программирование) состоит в том, что она объединяет данные вместе с кодом, который работает на нем. Если все сделано хорошо, это приводит к менее жестко связанному и, следовательно, более удобному коду.
На практике это означает меньшее количество глобальных переменных (независимо от того, используются ли они напрямую или доступны через статические методы factory) и меньше, проходящих вокруг данных (т.е. подписи с меньшим количеством методов).
Для конкретного примера рассмотрим расширение Mysqli: каждая функция имеет процедурные и ООП-версии, а в процедурной версии почти всегда должно быть дополнительное "link", чтобы дать ему контекст, если версия ООП получает этот контекст от текущего объекта.
Ответ 3
Все ответили правильно, что вам не хватает много, потому что пусть у вас есть сайт фотогалереи
вместо написания функций, и в конце концов вы заканчиваете их множеством.
ООП будет полезен в:
- Организация и сопровождение кода
- Добавляет ясность и уменьшает сложность
- Подчеркивает данные по процедурам
- Модульность кода
- Повторное использование кода (верьте мне, что вам это потребуется)
- Хорошо подходит для баз данных
Я раньше не использовал OOP, но я начал и, честно говоря, не очень давно, и нашел его очень полезным в этих точках, особенно в повторном использовании кода
Скажем, у меня есть сайт фотогалереи
я создам класс для пользователей, и этот класс сделает CRUD во всех таблицах пользователей
и класс для фотографий, чтобы сделать CRUD во всех таблицах фотографий
Я мог бы также сделать класс, чтобы делать все CRUD для меня, не указав, на какой таблице
а затем использовать наследование для расширения всех CRUD в классе моих пользователей и класса фотографии
точка в том, что я мог только писать методы CRUD один раз
а затем повторно использовать его во всех моих других классах
Надеюсь, я ответил бы на ваш вопрос
Ответ 4
IMO, Если вы не хотите разделять ваш htmls и php-код; вам лучше не использовать классы.
Вам понадобятся они в среде фреймворка (необязательно), и вам понадобятся они, если вы хотите охарактеризовать свои данные, обработайте их так.
но если вы в порядке, без вас, то вы в порядке:)
Когда дело доходит до обработки очень сложной системы, с множеством разных структур данных, нескольких членов команды и т.д. Вы и ваш код должны быть организованы очень хорошо, и вам понадобятся классы.
Ответ 5
Хороший вопрос! Вы получили мой взнос!
Прямо до пункта:
Вам не хватает всего мира!
Есть много метафор, чтобы описать это, но там ничего лучше, чем практика - вы, очевидно, знаете это после "лет" программирования!
Решите небольшой проект и напишите стиль OOP. Тогда вы получите идею.
Возьмите этот совет: назовите свои классы как их имена файлов (например, MyClass "- > " MyClass.php "). Легкость в обслуживании.
Ответ 6
Вероятно, вам не хватает тестируемости: я думаю, ваши функции вызывают другие функции, которые, в свою очередь, могут вызвать другую функцию, правильно? Таким образом, у вас возникнет проблема с тестированием изолированной функции. С помощью ООП вы собираете "кучи" объектов и можете обменивать каждый объект "поддельным" (называемым макетом или заглушкой) для теста. Таким образом, вы можете тестировать каждую функциональность изолированно. Подумайте о том, чтобы проверить тестовый код без необходимости в базе данных. Подумайте о тестировании своего кода контроллера (кода, который обрабатывает параметры запроса и определяет, какие действия следует предпринять), не требуя веб-сервера.