Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Телефонный справочник
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Телефонный справочник

Страниц (1): [1]
 

1. Jmunb - 11 Ноября, 2011 - 10:20:08 - перейти к сообщению
Добрый день.
Недавно потребовалось написать простой телефонный справочник на PHP используя ООП.
Требуемый функционал:
-Удаление
-Добавление
-Изменение
-Проверка на валидность введенных данных
-Вывод сообщений пользователю
-Поиск(Пока не реализовал)

Вот что навоял за вчерашний вечер http://roxm[dot]ru/phonenumber

Хотелось бы услышать конструктивную критику по данному коду, советы и предложения по его усовершенствованию так как задание очень важное хотя и не высокой сложности.
2. ams - 11 Ноября, 2011 - 10:27:57 - перейти к сообщению
КОд где? Улыбка
3. Jmunb - 11 Ноября, 2011 - 10:30:09 - перейти к сообщению
ams пишет:
КОд где? Улыбка

дозалил
4. валера - 11 Ноября, 2011 - 10:31:53 - перейти к сообщению
меня пугает тот факт, что любой может отредактировать/добавить/удалить запись... или так было задумано?
5. Jmunb - 11 Ноября, 2011 - 10:33:29 - перейти к сообщению
валера пишет:
меня пугает тот факт, что любой может отредактировать/добавить/удалить запись... или так было задумано?
Да так было задумано. Механизм авторизации будет прикручен позже. Сейчас волнуют вопросы ООП
6. Мелкий - 11 Ноября, 2011 - 10:45:39 - перейти к сообщению
Для джуниора - нормальная попытка, в общем.

Минусы:
MVC попытка корявая. Как вы будете делать редирект пользователя? Да хоть куки выставить? Заголовки уже отправлены.
HTML-код в коде.

XSS пропущены. SQL-инъекции тоже. А вот это очень плохо и самый большой минус.
7. Toxa - 11 Ноября, 2011 - 10:46:57 - перейти к сообщению
каждый класс принято выносить в отдельный файл.
Раз уж ты используешь контроллер, то должна быть и модель и вид, иначе не понятна логика. А в целом ты верно мыслишь
8. Jmunb - 11 Ноября, 2011 - 11:14:19 - перейти к сообщению
Мелкий пишет:
Как вы будете делать редирект пользователя? Да хоть куки выставить? Заголовки уже отправлены.

Можно поподробнее не совсем понятно.
Мелкий пишет:
HTML-код в коде.

Эту проблему планирую решить добавлением шаблонов.
Мелкий пишет:
XSS пропущены. SQL-инъекции тоже. А вот это очень плохо и самый большой минус.

Защита от XSS и SQL инъекций по ка что не бролась во внимание. Так как этой работой мне надо показать свой уровень знания ООП. (я знаю что он не высок но хотелось бы выглядить попристойнее). Что можете в этом направлении подсказать
(Добавление)
Toxa пишет:
Раз уж ты используешь контроллер, то должна быть и модель и вид, иначе не понятна логика. А в целом ты верно мыслишь

Ну в качестве вида я использую класс View который отображает данные. Класс Number как model. Поясните если не прав.
(Добавление)
Toxa пишет:
Раз уж ты используешь контроллер, то должна быть и модель и вид, иначе не понятна логика. А в целом ты верно мыслишь

В качетсве вида я использую класс View который отображает информацию. В качестве модели класс Number который работает с данными. Если я чтото не так понял поясните пожалуйста.
(Добавление)
Toxa пишет:
Раз уж ты используешь контроллер, то должна быть и модель и вид, иначе не понятна логика. А в целом ты верно мыслишь

В качетсве вида я использую класс View который отображает информацию. В качестве модели класс Number который работает с данными. Если я чтото не так понял поясните пожалуйста
9. sKaa - 11 Ноября, 2011 - 11:29:56 - перейти к сообщению
ооп на нуле. ты просто вытащил основные функции в отдельные классы которые между собой никак не объединены логикой...
раз уж ты взялся за принцип MVC попробую в двух словах растолковать...
у тебя должна быть единая точка входа, например через index.php
.htaccess :
Спойлер (Отобразить)

Все запросы на сайт будут передавать на index.php и будут выглядеть так mysite.com/index/action
Слово index тут это как правило название контроллера. Слово action это действие которе будет выполнено в контроллере.

Далее в index.php нужно реализовать __autoload() - это "магическая" функция прочитай про нее где нибудь.. в общем если ты её реализуешь не нужно будет писать
require_once("classes.php");
__autoload сама подгрузит нужный файл если класс вдруг объявить в любом месте кода до того как вылетит ошибка..

далее суть контроллера в том что он будет разбивать запрос твой
mysite.com/index/action $current_request = explode('/', $_SERVER['REQUEST_URI']);
в массив где
$current_request[1] будет название контроллера
$current_request[2] название функции в контроллере
и загружать его :
$file = (string) 'Путь к папке контроллеров' . 'Controller_' . $current_request[1] . '.php';
дальше проверки существует ли файл
и проверка is_callable(array($controller, $action))
короче я вспомнил статью на хабре.. внимательно прочитай её от а до я..
http://habrahabr[dot]ru/blogs/php/31270/
10. Самогонщик - 11 Ноября, 2011 - 11:48:10 - перейти к сообщению
Не хочу никого пугать, но формат урл и автолоад не имеют никакого отношения к MVC
11. Мелкий - 11 Ноября, 2011 - 11:54:51 - перейти к сообщению
Jmunb пишет:
Можно поподробнее не совсем понятно.

У вас контроллер вызывается только в середине шаблона, когда половина документа уже отдана - без костылей вы не сможете воспользоваться ни setcookie, ни header'ом.
Впрочем, с PHP5.3 кэширование есть по-умолчанию, но всё равно так быть не должно.

Jmunb пишет:
Защита от XSS и SQL инъекций по ка что не бролась во внимание. Так как этой работой мне надо показать свой уровень знания ООП. (я знаю что он не высок но хотелось бы выглядить попристойнее). Что можете в этом направлении подсказать

Защиту нужно реализовывать всегда. На мой взгляд, даже идеологически верно сделанный ООП, но на столько дырявый - незачёт.
mysql_real_escape_string и htmlspecialchars
12. sKaa - 11 Ноября, 2011 - 12:01:00 - перейти к сообщению
Самогонщик пишет:
мат урл и автолоад не имеют никакого отношения к MVC

Ну да, с этим я наверное погорячился, но всё-же я считаю что в MVC без чпу и аутолоад далеко не уйдешь...
13. Viper - 11 Ноября, 2011 - 12:12:45 - перейти к сообщению
[quote=sKaa][/quote] чисто ваше имхо.

 

Powered by ExBB FM 1.0 RC1