Телефонный справочник

Jmunb

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

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

Хотелось бы услышать конструктивную критику по данному коду, советы и предложения по его усовершенствованию так как задание очень важное хотя и не высокой сложности.
 

Вложения

  • 6,7 KB Просмотры: 26

AmdY

Пью пиво
Команда форума
Начни с MVC. в интернете дочерта информации. затем подели эту простыню classes на насколько файлов. про sql инъекции ты знаешь, сейчас убери XSS.
 

Jmunb

Новичок
Я знаю что все не хорошо
Но можно хотя бы пару советов? как жить дальше?
 

shureen

Милорд Лось Кристофер
Jmunb
тебе AmdY как раз дал пару хороших советов
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
1. Нет никакого смысла смешивать кучу классов в одном файле
2. Смысл писать так:
PHP:
class Number 
{
	private $data;
	private $resultLastReport;
	private $oneNumber;
	private $allNumber;
	
	function __construct() {
		$this->data = false;
		$this->resultLastReport = false;
		$this->oneNumber = false;
		$this->allNumber = false;
	}
}
почему не написать так:

PHP:
class Number 
{
	private $data = false;
	private $resultLastReport = false;
	private $oneNumber = false;
	private $allNumber = false;
	
	function __construct() {
		
	}
}
3. Класс View не отвечает своим требованиям, он должен быть шаблонизирующим классом, то есть в шаблоны ты должен хранить в файлах, а в них конструкции вида <=$var?>. Поэтому класс View должен подставлять туда переменные в нужные места. Самый простой такой шаблонизатов пишется на функциях перехвата вывода ob_...

4. Конструкцию вида:
PHP:
include("sql.php");
Заменить на написание нормального класса с плейсхолдерами и прочим, и писать в виде

PHP:
class Controller
{
	private $error = false;
	private $message = false;
	private $result = false;
	private $route = false;
	
	function __construct() {
		$this->db = new Database();
	}
}
Это в общем виде, там может быть и фабрика и синглтон, как кому на душу ляжет. Но не стоит мешать классы и функции вместе, смотрится не очень.

Как-то так.
 

Здыхлик

Kohaner
Команда форума
Если уж на то пошло, почему бы просто не взять готовый фреймворк? легче потратить денек на его изучение, чем месяц пытаться наваять свой велосипед... Хотя с точки зрения обучения и велосипеды полезны ))
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Денек на ZF? Или Yii? Ну-ну, удачи вам в освоении за денек.
 

Духовность™

Продвинутый новичок
Если уж на то пошло, почему бы просто не взять готовый фреймворк? легче потратить денек на его изучение, чем месяц пытаться наваять свой велосипед... Хотя с точки зрения обучения и велосипеды полезны ))
велосипед дает понимание.
 

Здыхлик

Kohaner
Команда форума
Ага, я поэтому о полезности написал. Только вот не все водители - автомеханики. По крайней мере, не сразу ;)
 

Духовность™

Продвинутый новичок
мы не водители, мы инженеры на заводе. без велосипедов вы не познаете суть, не поймете её.
 

AmdY

Пью пиво
Команда форума
Духовность™
Прежде чем изобретать велосипед, нужно ознакомиться с теорией и посмотреть существующие модели.
 

stopkran

Дилетант
Спорим, не подерётесь?

Jmunb, я добавил на сайт по ссылке код: <script>alert("virus");</script>

Этот код иллюстрирует две проблемы:

1) в режиме редактирования разрушается HTML элемент input (из-за кавычек);

2) ну, и само содержание скрипта может быть далеко не таким безобидным (AmdY говорил об XSS).
 
Сверху