|
0 / 0 / 0
Регистрация: 07.05.2014
Сообщений: 4
|
|
Не могу разобраться с ООП07.05.2014, 22:55. Показов 3227. Ответов 11
Метки нет (Все метки)
Здравствуйте уважаемые форумчане, в общем такая проблема, не могу осилить ооп, прочитал пару книг, просмотрел все курсы специалиста, вроде все понял,а на практике не знаю как использовать, да и пишу не в стиле ооп,а гавнокод получается!(
Посоветуйте пожалуйста какую нибуть книжку по пхп ооп с упражнениями, или может курс, или возможно у кого есть время и желание помочь мне разобраться,в любом случае буду очень благодарен за любой совет или помощь,ибо у меня уже отчаяние, что не могу поднять свой уровень! Заранее спасибо за помощь!
0
|
|
| 07.05.2014, 22:55 | |
|
Ответы с готовыми решениями:
11
Не могу разобраться с ООП в js Не могу разобраться с ООП Не могу разобраться с ООП |
|
48 / 48 / 26
Регистрация: 31.05.2011
Сообщений: 139
|
||
| 08.05.2014, 12:06 | ||
|
Книжек и курсов посоветовать не могу, но могу посоветовать взять какой-нибудь фреймворк (например Yii) и попробовать покодить на нем.
ООП не получится понять по щелчку пальцев. Здесь нужно много практики. Писать, писать и еще раз писать.
0
|
||
|
7 / 8 / 1
Регистрация: 08.08.2012
Сообщений: 63
|
|
| 15.05.2014, 10:52 | |
|
Почитайте книгу "Мэтт Зандстра - PHP. Объекты, шаблоны и методики программирования". Думаю многое прояснится...
0
|
|
|
4 / 4 / 1
Регистрация: 03.12.2013
Сообщений: 57
|
||||||||||||||||||||||||||
| 15.05.2014, 17:44 | ||||||||||||||||||||||||||
|
На теории можно понять не более, чем синтаксис ООП в пхп. Для того, чтобы понять, когда и как нужно его применять нужно много практики и желательно ручками - с нуля. Не соглашусь с тем, что разработка на YII или другом фреймворке поможет в освоении. Для того, чтобы пользоваться фреймворком нужно понимание ООП и MVC, которое само по себе не придёт.
Я бы посоветовал, для начала, написать систему регистрации. Примерная структура: есть папка с классами - db_class, user_class и authorize_class. db_class отвечает за взаимодействие с БД. Размести там возможные функции - select, update, insert, delete и пр. Они принимают в качестве параметра SQL запрос, в случае селекта - возвращают массив, в случае инсерта - id. Пример:
Теперь напиши класс users Подсказка: теперь тебе не нужно каждый раз писать отдельные запросы и разбирать их. Ты можешь включить класс баз данных в класс юзеров и пользоваться его методами там. Пример простенького класса users.
Вот пример работы с таким классом. Простая регистрация - по сути занесение пользователя в БД.
Создай отдельный класс, в котором будут методы для авторизации и выхода из профиля. Метод авторизации принимает параметры логина и пароля. Проверяет, есть ли такой пользователь и такой ли у него пароль. Если да - заносит его ID в сессию. Для того, чтобы этого не делать на каждой странице, в главный файл, который ты везде подключаешь, пиши проверку на сессию. Что то типа
И в заключении: Это просто совет для практики, чтобы улучшить понимание ООП и понять, почему это удобно. Прошу прощения за возможные не точности или опечатки, писал, практически на коленке и вслепую=) Но уверен, что всё работает. Конечно, это не лучшая структура для классов, много чего можно сделать продуктивнее, много чего можно (и нужно) добавить. Да и вообще, пхп позволяет делать намного более интересные вещи. не стоит воспринимать это, как какую то хорошую методику или стандарт.. Хотя по похожей системе я когда то делал довольно сложный ресурс с большими нагрузками. После освоения материала советую приступить к написанию чего то более серьезного. Магазин или форум, к примеру. Суть в том, что сначала ты поймешь, что это очень удобный подход. Потом ты поймешь, что многое можно сделать удобней. И наконец ты поймешь, что это не лучший подход и ВСЁ можно сделать иначе, ведь уже хватает практического опыта и понимания. Тогда тебе нужно будет изучать, к примеру, модель MVC и HMVC, советую статью на хабре - http://habrahabr.ru/post/150267/ В своё время очень помогла. А только потом уже можешь преступить к изучению фреймворков - советую YII. УДАЧИ!
1
|
||||||||||||||||||||||||||
|
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
|
| 16.05.2014, 08:56 | |
|
0
|
|
|
7 / 8 / 1
Регистрация: 08.08.2012
Сообщений: 63
|
||
| 16.05.2014, 09:31 | ||
|
Добавлено через 6 минут Вот еще книга, отличное введение в ООП и пример разработки реального приложения "календаря событий": "Джейсон Ленгсторф. PHP и jQuery для профессионалов".
0
|
||
|
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
||
| 17.05.2014, 23:29 | ||
|
0
|
||
| 17.05.2014, 23:40 | ||
|
Не по теме:
0
|
||
|
4 / 4 / 1
Регистрация: 03.12.2013
Сообщений: 57
|
|
| 19.05.2014, 16:07 | |
|
Согласен с замечанием, но, как я уже говорил, это просто пример для человека, показывающий удобство и наглядность ООП. Странно, что вы только на это обратили внимание, ведь в этом коде можно многое сделать лучше. А в реальном проекте, если у человека есть опыт, он сделает ВСЁ по другому. Говоря о классе БД, как минимум нужно делать обработку вводимых данных, пользоваться плейсхолдерами, делать обработку исключительных ситуаций и прочее-прочее. Это всё понятно, но не всем. Я просто хочу помочь человеку, указывая с чего стоило бы начать, т.к сам когда то пытался понять ООП и не мог понять для чего оно нужно вообще. Понял только со временем, когда начал разрабатывать серьезные проекты. А по поводу того, что $sql и $result публичные: вполне можно предположить ситуации, когда можно их использовать через екземпляр класса для повторного использования кода. Допустим к БД проводится ряд запросов, у которых схожий шаблон, но есть незначительные различия. Или запросы условны и не всегда должны использоваться. В таком случае, можно использовать какой то шаблон для запросов и менять только динамичные части запроса. Если писать простенький сайт, это врядли понадобится. Но я разрабатывал проект, важная часть которого - взаимодействие клиента и сервера посредством технологий comet и мне очень пригодился такой подход.
Так что тут нельзя сказать однозначно, всё зависит от ситуации. Пусть человек сам выбирает, стоит ли эти свойства инкапсулировать, или есть надобность пользоваться ими через объект...
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
||
| 19.05.2014, 16:12 | ||
|
Не по теме: я обратил внимание на многое. Просто лень было писать про все, я и написал "хотя бы то, что ..." Добавлено через 2 минуты
0
|
||
|
4 / 4 / 1
Регистрация: 03.12.2013
Сообщений: 57
|
|
| 19.05.2014, 16:43 | |
|
Мне кажется, что именно из за разницы в уровне опыта программисты не могут обучать начинающих. Многое кажется очевидно и очень важно, в итоге информация не усваивается. Понимание таких понятий, как инкапсуляция и полиморфизм приходя со временем и только на больших проектах. Человек в принципе не может понять, зачем ему скрывать какие то данные, для чего нужна абстракция и интерфейсы. Да и вообще, почему нужно писать какие о там классы, если можно пользоваться функциями и не парить мозг. В своём примере я показал в чём заключается удобство ООП и то, на сколько понятный получается код как таковой. Сделать обзор на всё, (а из этого "всё" большую часть можно назвать очень важной) просто не имею времени, да и это сделано до меня многими авторами.
0
|
|
|
2 / 2 / 1
Регистрация: 18.10.2013
Сообщений: 9
|
||||||
| 21.05.2014, 10:49 | ||||||
|
В приведенном примере вы создаете экземпляр класса DB в классе User.
Вопрос: Зачем? Когда его можно просто наследовать...
1
|
||||||
| 21.05.2014, 10:49 | |
|
Помогаю со студенческими работами здесь
12
Задали работу, не могу разобраться. Используется делфи 10, не могу разобраться, как это сделать ООП - не получается разобраться в задании
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|