Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 27.10.2012, 22:26   #1
_Mikhail_
Новичок
Джуниор
 
Регистрация: 27.10.2012
Сообщений: 4
По умолчанию Как правильно писать?

Доброго времени суток!

Немноженько предыстории...Потребовалось написать менеджер контактов (добавление, удаление, изменение контактов...плюс авторизация). Все это надо писать на PHP - исключительно ООП подход, и использовать JS (например для валидации форм). Сам проект прикреплен. Прошу, если будите смотреть, не обращать внимание на корректную работу всех функций и тд тп - это все будет переписываться. Главное логика построения приложения.

Так вот, у меня возникли трудности построения логики приложения в ООП формате, ибо не хватает опыта. Получился процедурный подход, наполовину обернутый в классы.

И к примеру:

1. После авторизации пользователя "повесил" на сессию. И что бы понимать авторизовался пользователь или нет в index.php засунул следующие:
PHP код:
    session_start();    
    
    if (!isset(
$_SESSION['logged'])) header("Location: http://contager.ru/auth/auth_view.php");
    else if (!
$_SESSION['logged'] == TRUEheader("Location: http://contager.ru/auth/auth_view.php"); 
Знаю это настолько каряво на сколько можно представить, но как по другому - не знаю.

2. Ну или к примеру, для выводе информации о контакте, обрабатываю его AJAX+jQuery, а скрипт обработки простой файлик с несколькими строчкам кода. Не класс вообщем, и это помоему тоже не правильно (хотя там и создаются объекты и тд...)

Это были примеры...а вообщем весь проект такой кривой.
Подскажите как мне построить это приложение, так что бы оно было действительно в стиле ООП?И Если ко то знает конкретный учебник, буду благодарен. Но так же скажу, что проект надо сдать в ближайшее время поэтому учебник прочитать не успею, но сделать надо хоть как то, кривизну надо выровнять)). Думаю все когда то были в таком положении). А и да, фреймворк применять нельзя)
Вложения
Тип файла: rar contager.ru.rar (5.64 Мб, 11 просмотров)
_Mikhail_ вне форума Ответить с цитированием
Старый 27.10.2012, 23:00   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Введение в ООП
Andkorol вне форума Ответить с цитированием
Старый 27.10.2012, 23:23   #3
_Mikhail_
Новичок
Джуниор
 
Регистрация: 27.10.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Отлично, конструктивно, информативно и доходчиво! Супер...
Я знаю что такое классы, наследование, полиморфизм, инкапсуляция, интерфейсы, магические методы и что там еще написано....я умею с ними обращаться. По крайней мере если еще раз прочитаю ВВЕДЕНИЕ В ООП, знаний не прибавиться. За помощь спасибо, но вы читали что я писал выше? Строя приложения я постоянно вылазию за пределы класса, и некоторые вычисления проводятся вне класса - этого не должно быть. Вот я и прошу посоветывать мне схему приложения, или учебник где такие схемы описываются, но ни как не основы ООП.
_Mikhail_ вне форума Ответить с цитированием
Старый 27.10.2012, 23:44   #4
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,691
По умолчанию

Разве не прокатывает?:
Код:
if (!$_SESSION['logged']) header("Location: http://contager.ru/auth/auth_view.php");
Цитата:
Подскажите как мне построить это приложение, так что бы оно было действительно в стиле ООП?
Возьмите UML редактор и набросайте в нем хотя бы диаграмму классов.
Или проще на листочке начертите. Разбейте всю систему на отдельный кусочки, которые взаимодействует друг с другом, попробуйте проложить пути этих взаимодействий от начала и до конца с разными входными параметрами. Этих путей может быть несколько, также как и выходов. Ну и каждый кусочек постепенно прорабатываете более детально, разбивайте на еще более мелкие если требуется. И на забывайте, что каждый блок есть набор классов/класс/метод.

Как-то так.

http://ru.wikipedia.org/wiki/UML
Kostia вне форума Ответить с цитированием
Старый 28.10.2012, 00:19   #5
_Mikhail_
Новичок
Джуниор
 
Регистрация: 27.10.2012
Сообщений: 4
По умолчанию

Приложил картику...вообщем не получается у меня объяснить, что у меня не получается))) - вот такая тавтология.
Как связать классы, то бишь что какой класс делает и какие данные принимает у меня проблемы не вызывает. Мне, что ли нужно свой мини фреймфорк написать, но не фореворк, а вроде как экосистему ООП в проекте....щас перечитал бредятина какая то, но блин уже не знаю что и уточнить в вопросе.

Строка
PHP код:
if (!$_SESSION['logged']) header("Location: http://contager.ru/auth/auth_view.php"); 
Катит, сама по себе. Но так как она не в Классе, то не катит. Так де как все обработчики проекта, это самостоятельные файлики.

Вот например мне надо будет расширять приложение, это будет весьма проблематичное задача, если оставить все как есть. Это я могу понять, а вот как эот исправить придумать не могу.
Изображения
Тип файла: jpg 1.jpg (13.5 Кб, 131 просмотров)
_Mikhail_ вне форума Ответить с цитированием
Старый 28.10.2012, 01:27   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от _Mikhail_ Посмотреть сообщение
Я знаю что такое классы, наследование, полиморфизм, инкапсуляция, интерфейсы, магические методы и что там еще написано....я умею с ними обращаться.
"Знаю звуки/буквы, знаю слова, знаю все части речи, умею всё это использовать – а говорить, читать и писАть не могу"...
Нет абсолютного рецепта/схемы – всё индивидуально и зависит от требуемого функционала и задач приложения.
Все попытки это дело обобщить заканчиваются созданием CMF/фрейфорков(мини-, микро- и т.п) – что требует немало времени.

Цитата:
Сообщение от _Mikhail_ Посмотреть сообщение
Строка
PHP код:
if (!$_SESSION['logged']) header("Location: http://contager.ru/auth/auth_view.php"); 
Катит, сама по себе. Но так как она не в Классе, то не катит. Так де как все обработчики проекта, это самостоятельные файлики.
Что мешает вынести эту часть кода в метод класса авторизации, и при проверке авторизации пользователя просто вызывать этот метод?
И то же самое с обработчиками форм, с выводом информации.
Нужно сделать в ООП-style – так создавай требуемые для твоих задач классы, выноси в них имеющийся процедурный функционал...
Тут никакой схемы не нужно – достаточно простого понимания задач приложения и основных принципов его работы.
Не вижу в этом никаких проблем для человека, знающего и понимающего основы ООП.
Andkorol вне форума Ответить с цитированием
Старый 28.10.2012, 02:22   #7
_Mikhail_
Новичок
Джуниор
 
Регистрация: 27.10.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
"Знаю звуки/буквы, знаю слова, знаю все части речи, умею всё это использовать – а говорить, читать и писАть не могу"...
Вы суть уловили, но палку перегнули! Я примерно это и имел ввиду. Даже не знаю, когда кодил на С++ вообще ни каких проблем не возникало с ООП, тут с PHP ступор у меня...поэтому и просил конкретного совета как сделать? Блин, обычно на форумах все плются, во пришел ничего не сделал просит что бы за него код написали.
Я же сам написал код, и спросил конкретно КАК СДЕЛАТЬ что бы получилось? вместо этого шлют основы ООП читать.

Ваш ответ наиболее конструктивен...ладно я уже решил как делать буду, тему можно закрывать.
_Mikhail_ вне форума Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi mysql trigger - как правильно писать? Прошу пример iskurt Помощь студентам 7 03.06.2012 19:03
Ребята как правильно на писать блок-схему по данному листингу программы(просто очень надо, а у меня не получается) denl9 Общие вопросы Delphi 1 08.05.2012 22:05
как код писать? yebath Visual C++ 3 28.05.2011 02:09
как правильно писать модули для билдера CodeNOT Общие вопросы C/C++ 2 27.12.2010 20:12
Как правильно запретить писать в комбо-боксе. А только выбирать? TwiX Общие вопросы Delphi 2 02.06.2010 01:34