I have a application class which is extended from base class named db. When i try to create an instance, I get error as
Call to a member function query() on a non object.
My Application Class is:
Class Application extends DB
{
public $sql;
/*
* Public Methods
*/
/*
* Constructor
*/
function Application() {
global $sql;
$sql = db::getInstance();
}
function selectSqli($access_table){
$result = $sql->query("select * from $access_table");
return $result;
}
}
My DB Class is:
class db extends mysqli{
protected static $instance;
protected static $options = array();
private function __construct() {
$db = self::$options;
// turn of error reporting
mysqli_report(MYSQLI_REPORT_OFF);
// connect to database
@parent::__construct(isset($db['host']) ? $db['host'] : 'localhost',
isset($db['user']) ? $db['user'] : 'root',
isset($db['pass']) ? $db['pass'] : '',
isset($db['dbname']) ? $db['dbname'] : 'angler_blog_post');
// check if a connection established
if( mysqli_connect_errno() ) {
throw new exception(mysqli_connect_error(), mysqli_connect_errno());
}
}
public static function getInstance() {
if( !self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
public function query($query) {
if( !$this->real_query($query) ) {
throw new exception( $this->error, $this->errno );
}
$result = new mysqli_result($this);
return $result;
}
}
I tried global, plublic but i cannot access the function query(). How to solve this bug.