Camillo
Новичок
Помогите разобраться с правильным ООП.
Привет.
Я достаточно давно "программирую" на PHP, но всё это время я использовал PHP для написания полезных мне одному утилит или простых веб-приложений. При этом я программировал процедурно и никогда не заморачивался по этому поводу.
Теперь, как мне кажется - я созрел для ООП (хотя бы частичного). Кажется из-за того, что код перестал приносить удовольствие, хочется чего-то более универсального, гибкого, понятного. Всё труднее и труднее расширять функционал того, что было сделано ранее. Вот поэтому я собственно говоря и делаю этот пост...
Решил начать с того, что стал изучать книгу "PHP5 для профессионалов" от изд-ва Wrox. В какой-то момент поймал себя на мысли, что примеров, которые даны в книге просто недостаточно и они не взаимосвязаны между собой. Отрывочные главы, которые едва ли можно увязать друг с другом. Куча рекоммендаций, но все примеры очень обтекаемые и мало что имеют общего с реальной разработкой (имхо). Не хватает какого-нибудь реального приложения, на примере которого было бы показано: "Вот так стоит делать
до тех пор, пока вы сами не поймете, что такой подход уже не достаточно гибкий.".
Я решил придумать самое простое приложение и на его примере научиться основам ООП...
Приложение: Каталог веб-сайтов разбитых по категориям.
Всё приложение умещается в 3х таблицах.
1. Таблица categories (category_id / title)
Список категорий. Каждый сайт может находиться только в одной категории.
2. Таблица websites (website_id / domain / category_id)
Список сайтов с указанием домена и индекса категории.
3. Таблица websites_meta (uid / website_id / meta_title / meta_value)
Таблица с параметрами сайта. Я "превратил" вертикали параметров в горизонтали, чтобы приложение было
более гибким и процесс разработки был более интересным.
Для начала необходимо реализовать...
1. Форма добавление\редактирования\удаления сайта.
2. Форма добавление\редактирования\удаления категории (добавление\удаление\редактирование категории можно сделать Ajax')..
3. Страница постраничного просмотра сайтов с фильтрацией по категориям (смена страниц Ajax'ом).
4. Страница постраничного просмотра категорий (смена страниц Ajax'ом).
Достаточно простое приложение, в котором задействовано несколько таблиц.
Допустим, в первую очередь - я создам Collection классы для категорий и для вебсайтов, чтобы оперировать не
просто массивами переменных, а именно объектами. Сразу возникают вопросы...
Сделать универсальный класс Collection и методы работы с коллекциями категорий\вебсайтов наследовать у него?
Вносить ли в Collection классы методы взаимодействия с БД, например добавление новой категори в базу, удаление категории из БД и т.д.?
Или создать отдельный класс именно для взаимодействий? Как назвать эти классы?
В каком классе определить метод, который будет отдавать HTML с массивом объектов для асинхронной подгрузки списка?
Каким образом производить валидацию входных данных и как увязать это с классом Collection?
Вот такие вопросы возникают в моей голове...
Скажу честно - читал достаточно много, но в голове полная путанница.
Очень прошу строго не судить, т.к. в ООП полный нуб.
Очень надеюсь, что найдутся желающие помочь в освоении ООП.
Спасибо!
P.S. Сорри, что так много букаф.
-~{}~ 27.01.09 03:44:
Разумеется, можно построить это приложение, разработав достаточно простые и очевидные классы, в каждом из которых определить такие методы, как добавление, получение списка, удаление и т.д., но хочется полностью использовать все преимущества PHP5.
-~{}~ 27.01.09 03:52:
В данном случае хотелось бы нарушить вот это золотое правило и сделать как раз так, как не рекоммендуется делать, т.к. это поможет мне понять как это всё работает.
Привет.
Я достаточно давно "программирую" на PHP, но всё это время я использовал PHP для написания полезных мне одному утилит или простых веб-приложений. При этом я программировал процедурно и никогда не заморачивался по этому поводу.
Теперь, как мне кажется - я созрел для ООП (хотя бы частичного). Кажется из-за того, что код перестал приносить удовольствие, хочется чего-то более универсального, гибкого, понятного. Всё труднее и труднее расширять функционал того, что было сделано ранее. Вот поэтому я собственно говоря и делаю этот пост...
Решил начать с того, что стал изучать книгу "PHP5 для профессионалов" от изд-ва Wrox. В какой-то момент поймал себя на мысли, что примеров, которые даны в книге просто недостаточно и они не взаимосвязаны между собой. Отрывочные главы, которые едва ли можно увязать друг с другом. Куча рекоммендаций, но все примеры очень обтекаемые и мало что имеют общего с реальной разработкой (имхо). Не хватает какого-нибудь реального приложения, на примере которого было бы показано: "Вот так стоит делать
до тех пор, пока вы сами не поймете, что такой подход уже не достаточно гибкий.".
Я решил придумать самое простое приложение и на его примере научиться основам ООП...
Приложение: Каталог веб-сайтов разбитых по категориям.
Всё приложение умещается в 3х таблицах.
1. Таблица categories (category_id / title)
Список категорий. Каждый сайт может находиться только в одной категории.
2. Таблица websites (website_id / domain / category_id)
Список сайтов с указанием домена и индекса категории.
3. Таблица websites_meta (uid / website_id / meta_title / meta_value)
Таблица с параметрами сайта. Я "превратил" вертикали параметров в горизонтали, чтобы приложение было
более гибким и процесс разработки был более интересным.
Для начала необходимо реализовать...
1. Форма добавление\редактирования\удаления сайта.
2. Форма добавление\редактирования\удаления категории (добавление\удаление\редактирование категории можно сделать Ajax')..
3. Страница постраничного просмотра сайтов с фильтрацией по категориям (смена страниц Ajax'ом).
4. Страница постраничного просмотра категорий (смена страниц Ajax'ом).
Достаточно простое приложение, в котором задействовано несколько таблиц.
Допустим, в первую очередь - я создам Collection классы для категорий и для вебсайтов, чтобы оперировать не
просто массивами переменных, а именно объектами. Сразу возникают вопросы...
Сделать универсальный класс Collection и методы работы с коллекциями категорий\вебсайтов наследовать у него?
Вносить ли в Collection классы методы взаимодействия с БД, например добавление новой категори в базу, удаление категории из БД и т.д.?
Или создать отдельный класс именно для взаимодействий? Как назвать эти классы?
В каком классе определить метод, который будет отдавать HTML с массивом объектов для асинхронной подгрузки списка?
Каким образом производить валидацию входных данных и как увязать это с классом Collection?
Вот такие вопросы возникают в моей голове...
Скажу честно - читал достаточно много, но в голове полная путанница.
Очень прошу строго не судить, т.к. в ООП полный нуб.
Очень надеюсь, что найдутся желающие помочь в освоении ООП.
Спасибо!
P.S. Сорри, что так много букаф.

-~{}~ 27.01.09 03:44:
Разумеется, можно построить это приложение, разработав достаточно простые и очевидные классы, в каждом из которых определить такие методы, как добавление, получение списка, удаление и т.д., но хочется полностью использовать все преимущества PHP5.
-~{}~ 27.01.09 03:52:
В данном случае хотелось бы нарушить вот это золотое правило и сделать как раз так, как не рекоммендуется делать, т.к. это поможет мне понять как это всё работает.
Простота – чем меньше архитектурных решений, тем лучше. 1 класс, который решает ровно одну проблему здесь и сейчас, возможно, лучше, чем набор из 1 класса, 3-х декораторов, одной фабрики и одного фасада, которые в будущем помогут решить 5 схожих проблем.
