У меня есть класс базы данных, который я создал, который использует PDO для подключения к моим запросам, я вызываю его в конструкторе основных классов как объект.
class MyClass
{
protected $db;
public __constructor()
{
$this->db = new Database();
}
}
class Themes extends MyClass
{
public $avatar;
public $theme_name;
public $theme_by;
public $theme_by_email;
public $theme_by_website;
public $theme_description;
public $theme_thumb;
public $theme_source;
public $theme_css;
public $theme_js;
public $theme_uploaded_on;
public function __construct()
{
parent::__construct();
$this->get_theme();
$this->get_avatar();
}
public function get_theme()
{
$sql = "SELECT *
FROM `user_themes`
WHERE `user_id` = " . $this->session->get('user_id');
if($this->db->row_count($sql))
{
$result = $this->db->fetch_row_assoc($sql);
$this->theme_name = $result['theme_name'];
$this->theme_by = $result['theme_by'];
$this->theme_by_email = $result['theme_by_email'];
$this->theme_by_website = $result['theme_by_website'];
$this->theme_description = $result['theme_description'];
$this->theme_source = $result['theme_source'];
$this->theme_css = $result['theme_css'];
$this->theme_js = $result['theme_js'];
$this->theme_uploaded_on = $result['theme_uploaded_on'];
}else{
die('no results');
}
}
}
Моя проблема в том, что если я включу мои расширенные классы, которые вызывают конструктор MyClass, то я получу эту ошибку:
Fatal error: Call to a member function rowCount() on a non-object in db.class.php on line 98
, которая указывает на эту строку в моем db.class.php
class Database {
private static $PDO;
private static $config;
public function __construct() {
if (!extension_loaded('pdo'))
die('The PDO extension is required.');
self::$config = config_load('database');
self::connect();
}
...
public function row_count($statement)
{
return self::$PDO->query($statement)->rowCount(); //Line 98
}
}
Если я закомментирую parent :: __ construct () из моих расширенных классов, тогда я в порядке и не получу ошибок.
Попробуйте мой сайт в FireFox, Chrom, Opera и Safari
http://www.helixagent.com
В Firefox 3.6 мне кажется, что все в порядке, но все остальные браузеры выдают ошибку, о которой я упоминал ...