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
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Ваше мнение о моих набросках?
Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
PHP я начал изучать относительно не давно.
В силу того что читать я не наживу, изучал практическими методами (ставил себе задачи и с подошью справки их реализовывал).
Но вот настал черед ООП и я ни как не могу его понять - как и с чем это "есть".
Попробовал написать класс работы с текстовой базой(код ниже), что то вроде получается, но смысл этого ООП когда все похоже на процедурное программирование?
Вообщем подскажите что я начал делать не так, потому что мне кажется что я пишу это "Филькина грамота"
Непонятно...
Поле txt стоит переименовать в extension, там ведь не только .txt м.б?
Метод checkfile не нужен, если нужен метод который обьеенит путь к файлу с расширением то стоит его сделать но не так как в checkfile
ID можно к такому виду привести, (тернарные операторы), очень очень упращают жиизнь.
return 0 ? count($DB)< 0 :(int)$DB[count($DB)-1]['id'];//Не очень читаемо но..
}
DROP - метод каж-тся неправильно работает.
В случае если это метод должен удалять файл если он есть..
А он наоборот действует, если это не файл, то он удаляет его.
Покинул форум
Сообщений всего: 92
Дата рег-ции: Янв. 2013
Помог: 0 раз(а)
spsu пишет:
record - там file_put_contents хватит
Действительно, забыл что file_put_contents имеет lock
spsu пишет:
$fileDB - арг-ммент который почти в каждую функц. передаеться стоит сделать полем.
Если честно, не совсем понимаю как. Ведь эта имя таблицы (вернее файла) если это будет свойством (полем) придется для каждой таблицы создавать объект класса.
Правильно понимаю?
DeepVarvar
Отправлено: 22 Января, 2013 - 17:58:03
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
shum0531 пишет:
Действительно, забыл что file_put_contents имеет lock
fflush он не имеет, а оный имеет необходимость быть для одновременной работы нескольких скриптов в контексте актуального чтения с диска. Так что оставьте как есть добавив fflush.
shum0531 пишет:
Филькина грамота
То, что указал spsu, не очень страшно. Страшнее то, что вы не удовлетворяете понятию ООП в контексте инкапсуляции. Пересмотрите смысл свойств и методов с учетом private и public.
Покинул форум
Сообщений всего: 176
Дата рег-ции: Нояб. 2012
Помог: 3 раз(а)
shum0531 пишет:
spsu пишет:
record - там file_put_contents хватит
Действительно, забыл что file_put_contents имеет lock
spsu пишет:
$fileDB - арг-ммент который почти в каждую функц. передаеться стоит сделать полем.
Если честно, не совсем понимаю как. Ведь эта имя таблицы (вернее файла) если это будет свойством (полем) придется для каждой таблицы создавать объект класса.
Покинул форум
Сообщений всего: 176
Дата рег-ции: Нояб. 2012
Помог: 3 раз(а)
Цитата:
Нет, я уже указал выше. Данное св-во должно быть приватным. Максимум что разрешаемо это его сеттер.
Зачем его приватным делать?
Тут от того что его поменяют нечего не случиться.
если-бы была какаето последовательность паблик методов которые вызываються,.. И между ними вклинив установку нового значение можно было бы все поламать то да а так....
Ну и правильность тут не проверяеться, тоесть сеттер будет пустой, а это лишний код(как мне кажеться).
DelphinPRO
Отправлено: 22 Января, 2013 - 18:07:24
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
shum0531 пишет:
Если честно, не совсем понимаю как. Ведь эта имя таблицы (вернее файла) если это будет свойством (полем) придется для каждой таблицы создавать объект класса.
ну давайте подумаем.
есть объект "База Данных". Этот объект может оперировать базой в целом (создать\удалить базу, создать\удалить таблицу в базе).
есть объект "Таблица". Этот объект должен уметь оперировать с данными (CRUD операции).
"База данных" должна нам предоставить объект нужной таблицы, который будет работать с данными. примерно так
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
spsu пишет:
Зачем его приватным делать?
Тут от того что его поменяют нечего не случиться.
потому что в публичный метод можно записать все, что угодно. например NULL
а в сеттере можно делать проверку на допустимость значения.
можно конечно и перед каждым использованием проверять, но лучше положить одинь раз правильное значение в приватное поле и быть уверенным, что оно будет корректным при использовании.
Покинул форум
Сообщений всего: 176
Дата рег-ции: Нояб. 2012
Помог: 3 раз(а)
Цитата:
именно в сеттере надо проверять что нам подсовывают.
Выше я и написал что т.к правильность не проверяеться...
Вы же не указали что код сеттера будет не пуст и там вообще что-то будет происходить.
Если код что в первом посту брать то в сеттере нечего будет проверять, т.к в каждом методе делаеться вызов is_file.
А если его уже переработать то тогда да сеттер понадобиться ну это смотря как перерабатывать...
DeepVarvar
Отправлено: 22 Января, 2013 - 18:28:19
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
spsu пишет:
Выше я и написал что т.к правильность не проверяеться...
Вы же не указали что код сеттера будет не пуст и там вообще что-то будет происходить.
Если код что в первом посту брать то в сеттере нечего будет проверять, т.к в каждом методе делаеться вызов is_file.
А если его уже переработать то тогда да сеттер понадобиться ну это смотря как перерабатывать...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.