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 :: Версия для печати :: Помогите составить ПРАВИЛЬНЫЙ класс MySQL
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Помогите составить ПРАВИЛЬНЫЙ класс MySQL

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

1. lowmax - 12 Апреля, 2012 - 18:23:28 - перейти к сообщению
Помогите ПРАВИЛЬНО реализовать класс для работы с БД

Вот что написал я

PHP:
скопировать код в буфер обмена
  1. class db {
  2.        
  3.         private $db;
  4.        
  5.         function __construct($host, $login, $password, $name) {
  6.                 $this->db = mysql_connect($host,$login,$password);
  7.                 mysql_select_db($name,$this->db);
  8.         }
  9.        
  10.         function __destruct() {
  11.                 $this->close();
  12.         }
  13.        
  14.         function sql($query) {
  15.                 return mysql_query($query, $this->db);
  16.         }
  17.        
  18.         function close() {
  19.                 if(isset($this->db)) {
  20.                         mysql_close($this->db);
  21.                         unset($this->db);
  22.                 }
  23.         }
  24.        
  25. }


но вот тут я увидел совсем другое

_http://www.php.su/articles/?cat=php5&page=002#p13

Помогите правильно написать класс
2. OrmaJever - 12 Апреля, 2012 - 18:28:07 - перейти к сообщению
3. lowmax - 12 Апреля, 2012 - 18:48:35 - перейти к сообщению
OrmaJever пишет:

вот как раз этого мне не нужно
4. DelphinPRO - 12 Апреля, 2012 - 18:51:37 - перейти к сообщению
все уже украдено, тьфу, блин, написано до вас Улыбка
mysqli, PDO
5. etoYA - 12 Апреля, 2012 - 18:54:48 - перейти к сообщению
lowmax, а чем ты сделаешь лучше?
Почему ты тогда пользвуешся функциями php, ведь можно написать свою хуже, но свою!
6. lowmax - 12 Апреля, 2012 - 19:14:06 - перейти к сообщению
etoYA пишет:
lowmax, а чем ты сделаешь лучше?
Почему ты тогда пользвуешся функциями php, ведь можно написать свою хуже, но свою!


ясный пень - я учусь писать свое, а не тупо пользоваться чужим
7. OrmaJever - 12 Апреля, 2012 - 19:20:19 - перейти к сообщению
Ну дак напишите свой язык, зачем вы пользуетесь чужим php? Драйвер mysql устарел и не безопасен, на замену пришёл mysqli, а у него уже есть обьектный интерфейс.
8. Bio man - 12 Апреля, 2012 - 19:20:21 - перейти к сообщению
мда, в наши та времена использовать устаревший mysql_* не целесообразно по отношению к новым разработкам в этой сфере (MySQL5). Используй PDO но оберни ее в синглтон, таким образом добьешся максимального функционала современных баз данных, да, именно баз данных, для этого и существует PDO. Представь ситуацию - тебе или заказчику захочется использовать Postgres вместо MySQL, тогда тебе придется перелопатить не мало кода. Но если работаешь с PDO то достаточно изменить DSN только в 1 месте, что бы система снова заработала.
9. DelphinPRO - 12 Апреля, 2012 - 19:35:00 - перейти к сообщению
lowmax пишет:
ясный пень - я учусь писать свое, а не тупо пользоваться чужим

касаемо конкретно работы с БД - не стоит тратить время на написание своего класса. Ведь это время можно потратить на изучение готовой библиотеки или чего еще более полезного.
10. lowmax - 13 Апреля, 2012 - 01:59:50 - перейти к сообщению
Спрашивал
Что собираюсь писать типа проект
Что лучше использовать mysqli или по старинке?
На современных хостингах поддерживается mysqli или нет? у меня на хостинге стоит php 5.0
ну и т.д.
В итоге никто ничего путного не ответил
потому как тролли

Делаю бесплатный проект (может со временем сделаю примочки платными) для всех желающих типа вордпресса (на самом деле идея не подходит для сравнения), но таким образом чтобы любой html сайт можно было оживить
т.е. любой школьник знающий html мог взять движок и парой простых добавлений в html превратить свой html сайт в полноценный блог (для начала блог)
Идея интересна тем что просто не придется тратить время на написание php кода.
И главное сайт будет оптимизирован (seo) под поисковики.
Но так как с ооп работаю впервые в php (раньше писал все функциями ну и стандартные обьекты юзал) приходится задавать вопросы и учу ооп исходя из трудностей с которыми сталкиваюсь и которые сам себе придумываю

кстати mysqli я смотрел, действительно очень простая вещь, вот только не понял - почему про нее не говорят на сайтах по php и книгах?

Ну а если вы затронули вопрос Postgres то вот встречный вопрос
У меня все базы огромные, таблички более 1000 000 строк (а то и несколько), естественно я не всегда доволен работой MySQL
Postgres будет быстрее работать?
Или то что вы предлагаете очередные понты для школьников у которых база максимум 1000 строк?

Цитата:
Ну дак напишите свой язык, зачем вы пользуетесь чужим php? Драйвер mysql устарел и не безопасен, на замену пришёл mysqli, а у него уже есть обьектный интерфейс.


вы думаете я не смогу написать и ваш вопрос заставит меня задуматься?)
это все не актуально с 90-х
сейчас время делать редакторы - шлеп-шлеп и сайт готов без программирования
11. etoYA - 13 Апреля, 2012 - 03:45:49 - перейти к сообщению
lowmax,
lowmax пишет:
сейчас время делать редакторы - шлеп-шлеп и сайт готов без программирования


Поверь, я сам недавно, наверное около месяца назад задавался вопросом, как правильно написать класс с работой базы. Меня направили на верный путь (mysqli), я так же как и ты ответил что неееееееееет!! Но стоило только попробовать, сразу же желание отпало делать бесполезные вещи.

Если ты про "нехочу использовать чужое". Дак это же делали разработчики PHP, если тебя и это не устраивает, то

OrmaJever пишет:
Ну дак напишите свой язык, зачем вы пользуетесь чужим php? Драйвер mysql устарел и не безопасен, на замену пришёл mysqli, а у него уже есть обьектный интерфейс.
12. lowmax - 13 Апреля, 2012 - 05:07:50 - перейти к сообщению
Я не против mysqli
вот только поддерживается он старыми версиями php?
и с какой версии поддерживает?
13. IllusionMH - 13 Апреля, 2012 - 05:16:59 - перейти к сообщению
lowmax, судя по документации PHP5+
14. Okula - 13 Апреля, 2012 - 05:43:00 - перейти к сообщению
lowmax пишет:
кстати mysqli я смотрел, действительно очень простая вещь, вот только не понял - почему про нее не говорят на сайтах по php и книгах?

У меня в книге 2006г. издания написано что драйвер mysql устарел и предпочтительнее использовать mysqli или pdo. Я незнаю какие ты книги покупаешь. Покупай правильные книги Улыбка
15. Мелкий - 13 Апреля, 2012 - 10:13:24 - перейти к сообщению
lowmax пишет:
У меня все базы огромные, таблички более 1000 000 строк (а то и несколько), естественно я не всегда доволен работой MySQL

А вот и не естественно. Нормально приготовленная база вполне бодро шевелится на таких объёмах.

lowmax пишет:
вот только поддерживается он старыми версиями php?
и с какой версии поддерживает?

Эти вопросы нормальные люди спрашивают у документации: http://nl3.php.net/manual/ru/mys...requirements.php
PHP4 и нормальный ООП - вещи несовместимые, следовательно - у вас в любом случае PHP5. Отсеять системным требованием динозавров 5.0.7 возможно.

lowmax пишет:
сейчас время делать редакторы - шлеп-шлеп и сайт готов без программирования

Я с вами не согласен в корне, но спорить не стану.

Bio man пишет:
Представь ситуацию - тебе или заказчику захочется использовать Postgres вместо MySQL, тогда тебе придется перелопатить не мало кода. Но если работаешь с PDO то достаточно изменить DSN только в 1 месте, что бы система снова заработала.

"Достаточно изменить" - это если ставить во главе всей разработки непременное требование забить на серьёзную оптимизацию и во что бы то ни стало поддерживать совместимость. Для проекта ТС это, пожалуй, подходит условие. Для хайлоада же - миграция на другую базу - всегда перелопачивание бОльшей части кода, а то и вовсе переписывание заново. Т.к. идёт заточка под конкретную базу с её конкретными сильными и слабыми сторонами.
Это ещё ладно в случае миграции с mysql, не так заметно. А попробуй смигрировать с постгреса на mysql? Если используются хотя бы штатный рекурсивный запрос?

lowmax пишет:
Помогите ПРАВИЛЬНО реализовать класс для работы с БД

Используйте полноценные private/protected/public и для методов.
Реализуйте паттерн singleton или factory.
Читайте Макконнелла "Совершенный код". Правильно с первого раза не получится реализовать по определению.

 

Powered by ExBB FM 1.0 RC1