Исключения в mysqli - есть ли надежда?

camka

не самка
Исключения в mysqli - есть ли надежда?

Для того, чтоб подключить механизм исключений для работы с mysqli приходится переписывать в потомке практически каждый метод непосредственно самого mysqli класса (и иже с ним).

Есть ли надежда, или, может быть, какие-то поползновения в эту сторону в узких кругах разработчиков, что исключения все-таки включат в модуль?
 

kvf77

Red Devil
camka

а зайти на сайт разработчиков и спросить не судьба?
 

camka

не самка
В прошлый раз, когда я задался подобным вопросом насчет модуля soap мне посоветовали отписаться напрямую dmitry'ю, поскольку какого-то отдельного ресурса для этого модуля не существует. Вот и хочу узнать, к кому обращаться в случае с mysqli.

-~{}~ 13.10.05 15:04:

Нашел ньюсгруп для соап, для mysqli группа отсутствует.
 

camka

не самка
PHP:
	public function __construct($host, $user, $pass, $dbname, $encoding = null)
	{
		parent::__construct($host, $user, $pass, $dbname);
		if (mysqli_connect_errno())
			throw new exception_sql(mysqli_connect_errno(), mysqli_connect_error());
		if ($encoding)$this->query('set names '.$encoding);
	}
Каждый раз приходится вписывать код для выкидывания исключений, если в методе происходит ошибка. Вот если бы можно было как-то установить возможность сообщения классом об ошибках методом выкидывания исключения вместо простого помещения ошибок в mysqli::error и mysqli::errno.
 

tony2001

TeaM PHPClub
то же самое надо делать и для всех остальных модулей работы с БД, исключая PDO.
 

camka

не самка
Вот это плюс PDO. Почему в mysqli не внести сей же плюс?
 

camka

не самка
Просто, после начала работы с пятой версией появляется привыкание к удобным возможностям, коими являются и исключения. Во многих модулях, включая СОАП и тот же ПОД, поддержка исключений включена. Очень было бы удобно, если б и mysqli имел эту поддержку. Я просто надеялся, что подобная возможность уже была вынесена на обсуждение, и рассматривается разработчиками. Если же нет, то хотя бы посоветуйте, куда мне обращаться с этим фича-реквестом?
 

tony2001

TeaM PHPClub
я к тому, что это общий стиль написания модулей для БД.
кроме того, у PDO эксепшены - это изначально опционально.

ну и главное: всё это легко решается через set_error_handler(), который уже может бросать эксепшены в зависимости от уровня ошибки.

-~{}~ 13.10.05 16:28:

это сто лет назад обсуждалось и решение было такое:
только новые, изначально OO экстеншены _могут_ использовать эксепшены.
остальные переделывать никто не будет.
 

camka

не самка
Автор оригинала: tony2001
почему именно mysqli ?
почему не interbase, к примеру?
- Потому как он вышел уже под пятерку. И все пятерочные возможности были бы вполне кстати, и не надо думать об обратной совместимости с четверкой.

- Потому как я пока работаю только с майскл, но подобная возможность вполне была бы, я полагаю, востребована и для других модулей. Разв нет?
 

tony2001

TeaM PHPClub
>не надо думать об обратной совместимости с четверкой.
интересные вы люди, всё таки.
одни говорят "к черту BC", другие поднимают дикий вой из-за небольшого изменения в major release (см. юзера pachanga и его баг-репорты).
нет, и то, и другое - крайности, в которые бросаться не стОит.
 

camka

не самка
Автор оригинала: tony2001
это сто лет назад обсуждалось и решение было такое:
только новые, изначально OO экстеншены _могут_ использовать эксепшены.
остальные переделывать никто не будет.
То есть, это означает, что никто с этим заморачиваться не будет, все мысли о внесение в Mysqli исключений надо отбросить и обходиться без них? Если да, то вопрос снят. Если же все-таки есть надежда, то куда обращаться?
 

camka

не самка
Автор оригинала: tony2001
>не надо думать об обратной совместимости с четверкой.
интересные вы люди, всё таки.
одни говорят "к черту BC", другие поднимают дикий вой из-за небольшого изменения в major release (см. юзера pachanga и его баг-репорты).
нет, и то, и другое - крайности, в которые бросаться не стОит.
Ну раз mysqli появился только в пятерке, о какой совместимости с четверкой может идти речь?
 

tony2001

TeaM PHPClub
это только в Perl - there is more than one a way to do it (читается как "есть сотня путей отстрелить себе ногу так, чтобы никто не понял").
есть нормальный путь решения - используйте его.
зачем нужно менять все экстеншены, если это и так всё возможно?

-~{}~ 13.10.05 16:34:

>Ну раз mysqli появился только в пятерке, о какой совместимости с четверкой может идти речь?
речь идёт о навязывании OO-style.
 

camka

не самка
Автор оригинала: tony2001
ну и главное: всё это легко решается через set_error_handler(), который уже может бросать эксепшены в зависимости от уровня ошибки.
Это уже больше хак, так как придется парсить текст сообщения дабы определить, кто его (исключение)выплюнул. А если имеется несколько типов Исключений? Для соединения - одно, для ошибки запроса - другое? Опять тот же парсинг, но гиморней. Кстати в концепцию ОО не вписываются mysqli_connect_err* функции. Их бы в иключения переделать, во счастье б было.
 

tony2001

TeaM PHPClub
>Это уже больше хак, так как придется парсить текст сообщения дабы определить, кто его (исключение)выплюнул.
зачем?
есть getTrace().

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

>Кстати в концепцию ОО не вписываются mysqli_connect_err* функции.
"функции не вписываются в концепцию ОО" ?
я, пожалуй, это запишу..

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

crocodile2u

http://vbolshov.org.ru
camka
Вот если бы mysqli_*** функции были не функциями, а методами... Тогда это было бы рационально - позволять (!) пользователю сделать установку "бросать исключение при ошибке". А так получается - ты только о себе думаешь...
 

tony2001

TeaM PHPClub
>Вот если бы mysqli_*** функции были не функциями, а методами...
они, собсно, и то, и другое.
проблема в этом.
 
Сверху