Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс db_con 
V
    Опции темы
gta4kv
Дата 6.9.2010, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата(SneG0K @ 6.9.2010,  11:17)

Добавлено @ 11:18
Этот парень мне supervalislav'a напоминает smile

 smile  smile поржал с утреца

Добавлено через 3 минуты и 40 секунд
Насчет "не ООП", ну так вот - засунуть все стандартные функции mysqli в свой класс это не есть ООП. 
PM MAIL   Вверх
Muerto
Дата 6.9.2010, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



gta4kv, опять же, что такое ооп по вашему?


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 6.9.2010, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Я не умею умные длинные посты писать, но, еще раз повторюсь, сделать класс который будет выполнять стандартные функции под другим именем это кривой велосипед

на предыдущих страницах писали - что понимание придет со временем

Это сообщение отредактировал(а) gta4kv - 6.9.2010, 12:54
PM MAIL   Вверх
Muerto
Дата 6.9.2010, 13:18 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



gta4kv, значит во первых вы считайте что вспомогательные классы это не ооп, и право на жизнь не имеет?
и мне каждый раз общение с базой с нуля нужно делать на основе чистой mysqli ?

Далее, с чего вы взяли что все что мой класс делает это лишь использует mysqli и ничего более?

Как бы если я впишу $db->do_query("myquery",1);
то вы считайте что метод в классе выглядит вот так:

Код

public function do_query($thequery){
        return  $this->conn_id->query($thequery);


А на самом деле вот так:

Код

public function do_query($thequery,$escape=0){
       if(!isset($this->conn_id))
       {
        if(!isset($this->ifinit))trigger_error('Please do init_conn.', E_USER_ERROR);
        $this->open_conn();
       }
        $this->last_qresult=( $escape==1 )?( $this->conn_id->query($this->escape($thequery)) ):( $this->conn_id->query($thequery) );
           $this->reqs_num++;
        if(!$this->last_qresult)
        {
        $this->close_conn();
        trigger_error('Do_Query Error! code: '.$this->conn_id->errno, E_USER_ERROR);
         }
        return $this->last_qresult;
    }


Т.е. если бы я взял ваш подход, то при каждом запросе я бы писал заново с нуля все что у меня под "на самом деле"

Здесь же есть класс который все это делает для меня, и сокращает код с 1000 строк до 100, и это плохо да?


Это сообщение отредактировал(а) Muerto - 6.9.2010, 13:22


--------------------
user posted image
PM MAIL   Вверх
cutwater
Дата 6.9.2010, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 1
Всего: 10



По-моему поциенту уже объясняли что открывать соединение с базой необходимо в начале и не париться по поводу этого каждый раз при выполнении запроса.

Добавлено @ 13:25
        
Код

        if(!$this->last_qresult)
        {
        $this->close_conn();
        trigger_error('Do_Query Error! code: '.$this->conn_id->errno, E_USER_ERROR);
         }
        return $this->last_qresult;
        


И все таки, что курил автор?

Это сообщение отредактировал(а) cutwater - 6.9.2010, 13:26


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 6.9.2010, 13:27 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Да это точно supervladislav, забейте.
PM MAIL   Вверх
Muerto
Дата 6.9.2010, 13:30 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



cutwater, Да вы это говорили и не раз, можете это проигнорировать, это лично мое предпочтение
Я так делаю потому что я лентяй, у этого есть все же свои преимущества
но теоретически я бы мог в функции init_conn создавать подключение в конце объявления параметров...

В функции __construct я это делать не могу потому что у меня сотни баз данных с разными паролями, максимум что я могу это использовать ini файл или что то другое откуда constructor будет данные грузить, или даже с класса Vars
Но пока что я работаю без ini, хоть и класс ini_Parser я написал...

Добавлено @ 13:31
gta4kv, вы общаетесь с http://www.facebook.com/dckurushin , я здесь на форуме не первый год и не первую тему создаю

Это сообщение отредактировал(а) Muerto - 6.9.2010, 13:31


--------------------
user posted image
PM MAIL   Вверх
cutwater
Дата 6.9.2010, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 1
Всего: 10



Цитата(Muerto @  6.9.2010,  12:30 Найти цитируемый пост)
В функции __construct я это делать не могу потому что у меня сотни баз данных с разными паролями


Сударь не слышал о параметрах?


Цитата(Muerto @  6.9.2010,  12:30 Найти цитируемый пост)
что у меня сотни баз данных с разными паролями


Для одного сайта штоле?

Какой-то бред откровенно говоря. В который раз убеждаюсь в бесполезности общения с поциентом. Удачи =)


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 6.9.2010, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



cutwater, Да таки криво, я когда цитировал прибавил , что бы выглядело как то поумней и допустил ошибку
Код

 if(!$this->last_qresult)
        {
        $this->close_conn();
        trigger_error('Do_Query Error! code: '.$this->conn_id->errno, E_USER_ERROR);
         }


настоящий оригинал был такой:

Тоже не фонтан но все же

Код

  if(!$this->last_qresult)
        {
        printf("Errorcode: %d\n", $this->conn_id->errno);
        exit();
         }


А сейчас подумал лучше всего таки оставить старое с добавкой потому что trigger  все равно что сделать exit, и будет висеть подключение

Код

  if(!$this->last_qresult)
        {
        printf("Do_Query Error! Errorcode: %d\n", $this->conn_id->errno);
            $this->close_conn();
        exit();
         }


Добавлено @ 13:41
Цитата(cutwater @ 6.9.2010,  13:34)
Цитата(Muerto @  6.9.2010,  12:30 Найти цитируемый пост)
В функции __construct я это делать не могу потому что у меня сотни баз данных с разными паролями


Сударь не слышал о параметрах?


Цитата(Muerto @  6.9.2010,  12:30 Найти цитируемый пост)
что у меня сотни баз данных с разными паролями


Для одного сайта штоле?

Какой-то бред откровенно говоря. В который раз убеждаюсь в бесполезности общения с поциентом. Удачи =)

Какие параметры могут быть у функции
 
Код

private function __construct()
 и как вы их туда передадите? научите пожалуйста...
Обявление идет такое:
$db=db_class::getInstance()


И кто сказал вам что у меня один сайт? с 100 базами? у меня много сайтов, просто я раньше как то их все строил в процедурном стиле

Это сообщение отредактировал(а) Muerto - 6.9.2010, 13:43


--------------------
user posted image
PM MAIL   Вверх
cutwater
Дата 6.9.2010, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 1
Всего: 10



Цитата(Muerto @  6.9.2010,  12:37 Найти цитируемый пост)
  exit();


Жесть... как представлю что такой printf сработает на боевом сайте.... 

Сударь не слышал об исключениях?

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


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 6.9.2010, 13:45 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



cutwater, вы про try catch?
Я считаю что если разработчик допустил ошибку скрипт нужно останавливать, или же если произошел сбой на сервере...
в других случаях exit никогда не случиться

Возможно со временем как тут многие пишут, я пойму что я не прав, и это как шоу, когда один из героев умер от инфаркта, продолжается все равно


Это сообщение отредактировал(а) Muerto - 6.9.2010, 13:46


--------------------
user posted image
PM MAIL   Вверх
cutwater
Дата 6.9.2010, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 1
Всего: 10



Цитата(Muerto @  6.9.2010,  12:37 Найти цитируемый пост)
 и как вы их туда передадите? научите пожалуйста...
Обявление идет такое:
$db=db_class::getInstance()


в 10й раз повторяю об инициализации базы в начале. из конфига, из переменной whatever.... если так не хочется открывать соединение заранее, да пожалуйста, вызывайте где угодно. параметры можно запомнить. НО это хреновый дизайн.
Ибо писать нормально вы упорно отказываетесь...


Цитата(Muerto @  6.9.2010,  12:37 Найти цитируемый пост)
И кто сказал вам что у меня один сайт? с 100 базами? у меня много сайтов, просто я раньше как то их все строил в процедурном стиле


Да потому что проблемы на пустом месте... проблемы с параметрами, не можете их передать где надо. Или зачем тогда было говорить про сотни баз с разными паролями.

На сим откланяюсь. У меня о Вас сложилось вполне четкое мнение, и больше тратить свое время без пользы на Вас не намерен. 

Это сообщение отредактировал(а) cutwater - 6.9.2010, 13:49


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 6.9.2010, 13:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата(Muerto @ 6.9.2010,  13:45)
Я считаю что если разработчик допустил ошибку скрипт нужно останавливать, или же если произошел сбой на сервере...

http://phpfaq.ru/error
Это насчет ошибок. Написанное выше бред. Остановить скрипт - да, но выведенная ошибка - ###.

Это сообщение отредактировал(а) gta4kv - 6.9.2010, 13:54
PM MAIL   Вверх
Muerto
Дата 6.9.2010, 13:51 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Цитата(cutwater @ 6.9.2010,  13:48)
Ибо писать нормально вы упорно отказываетесь...

А может я вовсе не умею? и вы вашими советами мне ничем не помогайте кроме как сказать что вы можете хорошо а мое ###?


Тут история вообще такая

Мой стиль жизни экономный:

У меня есть тачка снизу рядом с домом, я выйду заведу и поеду...

А у вас стиль жизни другой:

У вас тачка стоит рядом с домом и уже заведенная, и вы не думайте о том что возможно вы сегодня никуда не поедите и бензин сгорит зря!!!

ИМЕННО ОБ ЭТОМ РЕЧЬ

Это и есть самая разница между просто объявить объект класса, или объявить его и создать подключение, без учета того будем делать запросы или нет

Добавлено @ 13:54
Цитата(gta4kv @ 6.9.2010,  13:51)
Цитата(Muerto @ 6.9.2010,  13:45)
Я считаю что если разработчик допустил ошибку скрипт нужно останавливать, или же если произошел сбой на сервере...

http://phpfaq.ru/error
Это насчет ошибок. Написанное выше бред. Остановить скрипт - да, но выведенная ошибка - ###.

Не исключено , пообедаю и почитаю как правильно нужно делать, там чет опять trigger промелькнул... надо будет глянуть...

Вообще мне лично не понятно (я ещё не читал то что дали) , я очень боюсь разных trigger ибо если подключение открыто, а например в вашем подходе оно будет всегда открыто с самого начала, то если мы работает с mysqli подключения сами закрываться не будут в конце работы скрипта в отличии вроде от mysql , и поэтому у нас быстро достигнется maximum connection





Если вы захотите в подобную тему не лишь бы почувствовать насколько вы лучше и обосрать,
то если демонстрировать как это делать вы не хотите, хотя бы давайте ссылки на толковые статьи!

Это сообщение отредактировал(а) Muerto - 6.9.2010, 14:09


--------------------
user posted image
PM MAIL   Вверх
enoff
Дата 6.9.2010, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 30.6.2010
Где: Санкт-Петербург

Репутация: 11
Всего: 13



советов дано огромное множество, все равно все по-своему. Что такое ООП? Читайте Гради Буча, я ссылку привел.

Добавлено через 23 секунды
 smile 
PM MAIL ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2584 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.