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 :: Помогите составить ПРАВИЛЬНЫЙ класс MySQL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Класс доступа к Базе Данных
lowmax
Отправлено: 12 Апреля, 2012 - 18:23:28
Post Id



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




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

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

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

Помогите правильно написать класс

(Отредактировано автором: 12 Апреля, 2012 - 18:24:57)

 
 Top
OrmaJever Модератор
Отправлено: 12 Апреля, 2012 - 18:28:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)






-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
lowmax
Отправлено: 12 Апреля, 2012 - 18:48:35
Post Id



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




OrmaJever пишет:

вот как раз этого мне не нужно
 
 Top
DelphinPRO
Отправлено: 12 Апреля, 2012 - 18:51:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




все уже украдено, тьфу, блин, написано до вас Улыбка
mysqli, PDO


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
etoYA
Отправлено: 12 Апреля, 2012 - 18:54:48
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




lowmax, а чем ты сделаешь лучше?
Почему ты тогда пользвуешся функциями php, ведь можно написать свою хуже, но свою!
 
 Top
lowmax
Отправлено: 12 Апреля, 2012 - 19:14:06
Post Id



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




etoYA пишет:
lowmax, а чем ты сделаешь лучше?
Почему ты тогда пользвуешся функциями php, ведь можно написать свою хуже, но свою!


ясный пень - я учусь писать свое, а не тупо пользоваться чужим
 
 Top
OrmaJever Модератор
Отправлено: 12 Апреля, 2012 - 19:20:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




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


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Bio man
Отправлено: 12 Апреля, 2012 - 19:20:21
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




мда, в наши та времена использовать устаревший mysql_* не целесообразно по отношению к новым разработкам в этой сфере (MySQL5). Используй PDO но оберни ее в синглтон, таким образом добьешся максимального функционала современных баз данных, да, именно баз данных, для этого и существует PDO. Представь ситуацию - тебе или заказчику захочется использовать Postgres вместо MySQL, тогда тебе придется перелопатить не мало кода. Но если работаешь с PDO то достаточно изменить DSN только в 1 месте, что бы система снова заработала.
 
 Top
DelphinPRO
Отправлено: 12 Апреля, 2012 - 19:35:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




lowmax пишет:
ясный пень - я учусь писать свое, а не тупо пользоваться чужим

касаемо конкретно работы с БД - не стоит тратить время на написание своего класса. Ведь это время можно потратить на изучение готовой библиотеки или чего еще более полезного.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
lowmax
Отправлено: 13 Апреля, 2012 - 01:59:50
Post Id



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Спрашивал
Что собираюсь писать типа проект
Что лучше использовать mysqli или по старинке?
На современных хостингах поддерживается mysqli или нет? у меня на хостинге стоит php 5.0
ну и т.д.
В итоге никто ничего путного не ответил
потому как тролли

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

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

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

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


вы думаете я не смогу написать и ваш вопрос заставит меня задуматься?)
это все не актуально с 90-х
сейчас время делать редакторы - шлеп-шлеп и сайт готов без программирования

(Отредактировано автором: 13 Апреля, 2012 - 02:06:29)

 
 Top
etoYA
Отправлено: 13 Апреля, 2012 - 03:45:49
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




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


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

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

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

(Отредактировано автором: 13 Апреля, 2012 - 03:46:52)

 
 Top
lowmax
Отправлено: 13 Апреля, 2012 - 05:07:50
Post Id



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Я не против mysqli
вот только поддерживается он старыми версиями php?
и с какой версии поддерживает?
 
 Top
IllusionMH
Отправлено: 13 Апреля, 2012 - 05:16:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




lowmax, судя по документации PHP5+
 
 Top
Okula
Отправлено: 13 Апреля, 2012 - 05:43:00
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




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

У меня в книге 2006г. издания написано что драйвер mysql устарел и предпочтительнее использовать mysqli или pdo. Я незнаю какие ты книги покупаешь. Покупай правильные книги Улыбка
 
 Top
Мелкий Супермодератор
Отправлено: 13 Апреля, 2012 - 10:13:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




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.
Читайте Макконнелла "Совершенный код". Правильно с первого раза не получится реализовать по определению.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB