I have mysqli object in Database class base:
class Database {
private $dbLink = null;
public function __construct() {
if (is_null($this->dbLink)) {
// load db information to connect
$init_array = parse_ini_file("../init.ini.inc", true);
$this->dbLink = new mysqli($init_array['database']['host'],
$init_array['database']['usr'],
$init_array['database']['pwd'],
$init_array['database']['db']);
if (mysqli_connect_errno()) {
$this->dbLink = null;
}
}
}
public function __destruct() {
$this->dbLink->close();
}
}
Class derived is Articles where I use object dBLink in base (or parent) class and I can't access to mysqli methods (dbLink member of base class):
Articles class:
require_once ('./includes/db.inc');
class Articles extends Database{
private $id,
....
....
$visible = null;
public function __construct() {
// Set date as 2009-07-08 07:35:00
$this->lastUpdDate = date('Y-m-d H:i:s');
$this->creationDate = date('Y-m-d H:i:s');
}
// Setter
....
....
// Getter
....
....
public function getArticlesByPosition($numArticles) {
if ($result = $this->dbLink->query('SELECT * FROM articles ORDER BY position LIMIT '.$numArticles)) {
$i = 0;
while ($ret = $result->fetch_array(MYSQLI_ASSOC)) {
$arts[$i] = $ret;
}
$result->close();
return $arts;
}
}
}
In my front page php I use article class:
include_once('./includes/articles.inc');
$articlesObj = new articles();
$articles = $articlesObj->getArticlesByPosition(1);
var_dump($articles);
:'(
Notice: Undefined property: Articles::$dbLink in articles.inc on line 89
Fatal error: Call to a member function query() on a non-object in articles.inc on line 89
If I remove constructor on derived class Articles result don't change :'(
Please help me