camka
не самка
Невозможно наследовать от mysqli с использованием mysqli_init()
Понадобилось установить некоторые опции для соединения с базой посредством класса mysqli. До этого использовал свой класс, наследованный от mysqli с подключением в конструкторе. Поскольку теперь до непосредственно самого подключения к базе необходимо использовать mysqli_options, то и инициализировать объект следует с помощью mysqli_init() и подключаться с помощью mysqli_real_connect(). Но вот незадача - как же я смогу использовать свой класс, когда mysqli_init() возвращает объект класса mysqli и переделать его в объект моего класса не представляется возможным.
Как быть?
Понадобилось установить некоторые опции для соединения с базой посредством класса mysqli. До этого использовал свой класс, наследованный от mysqli с подключением в конструкторе. Поскольку теперь до непосредственно самого подключения к базе необходимо использовать mysqli_options, то и инициализировать объект следует с помощью mysqli_init() и подключаться с помощью mysqli_real_connect(). Но вот незадача - как же я смогу использовать свой класс, когда mysqli_init() возвращает объект класса mysqli и переделать его в объект моего класса не представляется возможным.
Как быть?
PHP:
<?
class mysqli_ extends mysqli
{
public function __construct($host = null, $user = null, $pass = null, $dbname = null, $options = null)
{
if ($options)
{
// ?????
$me = &$this;
$me = mysqli_init();
foreach($options as $opt=>$v)
$me->options($opt, $v);
$me->real_connect($host, $user, $pass, $dbname);
}
else
parent::__construct($host, $user, $pass, $dbname);
}
public function query($sql)
{
log($sql);
parent::query($sql);
}
}
$z = new mysqli_('localhost', 'root', null, null, array(MYSQLI_INIT_COMMAND=>'set lc_time_names=ru_RU'));
$z->query('select 1');
// Warning: mysqli::query(): Couldn't fetch mysqli_ on line 23