Невозможно наследовать от mysqli с использованием mysqli_init()

camka

не самка
Невозможно наследовать от mysqli с использованием mysqli_init()

Понадобилось установить некоторые опции для соединения с базой посредством класса 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
 

itprog

Cruftsman
PHP:
          if ($options)
          {
                 $this->init();
                 foreach($options as $opt=>$v)
                      $this->options($opt, $v);
                      
                 $this->real_connect($host, $user, $pass, $dbname);
          }
?
 

camka

не самка
itprog
Ух, ты! Спасибо. Работает.

Возможно вы тогда сможете еще подсказать, как можно было бы наследовать свои классы и от mysqli_stmt или mysqli_result, чтобы можно было возвращать их, соответствено из mysqli_prepare (вернее, в переопределенном методе своего класса, наследованного от mysqli) и mysqli_query.
 

camka

не самка
Благодарю. Вы меня полностью удовлетворили.

Обидно вот только, что всего этого нельзя узнать из документации. Кто бы мог подумать, что у mysqli_* объектов имеются еще и полноценные конструкторы.
 
Сверху