2014-10-15 1 views
0

Это то, что я придумал до сих пор:PHP - Как продлить SQLite3Result класс

class SQLite3_extended extends SQLite3 { 
    public function query($string){ 
    $result = parent::query($string); 
    if(is_bool($result)) 
     return $result; 
    else 
     return new SQLite3Result_extended($this); 
    } 
} 

class SQLite3Result_extended extends SQLite3Result { 
    public function test(){ 
    echo 'SQLite3Result extended successfully!'; 
    } 
} 

И я получаю это: Фатальная ошибка: Призыв к частной SQLite3Result :: __ конструкт() из контекста «SQLite3_extended

Как расширить класс SQLite3Result?

ответ

0

Вы не можете. Класс SQLite3Result может быть создан только по умолчанию: SQLite3::query(); нет никакого способа построить экземпляр этого класса или подкласса самостоятельно.

Если вы хотите расширяемый класс базы данных, используйте PDO. Вы можете использовать собственный подкласс для операторов/результатов, вызвав PDO::setAttribute() с аргументом PDO::ATTR_STATEMENT_CLASS. В качестве бонуса он может позволить вам поддерживать базы данных, отличные от SQLite.

+0

Если только я новичок в структуре SQLite3Result :: __ construct(), я мог бы переписать его в расширенной базе данных и установить его как общедоступный. Что вы можете сказать об этом? – user3600124

+0

Вы не можете. Он реализован в C как часть расширения sqlite3. – duskwuff