私はOOPの初心者ですが、まだ実験中です。 私はエラー致命的なエラー:キャッチされていないエラー:nullのメンバー関数のquery()を呼び出す
Fatal error: Uncaught Error: Call to a member function query() on null on the following line:
を得ている私は、DB接続がコアクラスから継承されていないことを認識しているが、私は、なぜ分かりません。
$user = $this->db->query("SELECT * FROM users WHERE id='".$user_id."' LIMIT 1");
Class.phpと
class Core {
public $db;
public $domain;
public $settings;
public function getDomain() {
return $this->domain;
}
function __construct($db,$domain) {
$this->db = $db;
$this->domain = $domain;
$this->getSettings();
}
public function getSettings() {
$settings = $this->db->query("SELECT * FROM settings");
$settings = $settings->fetch_object();
$this->settings = $settings;
}
}
class User extends Core {
public $user;
function __construct($user_id) {
$this->setUser($user_id);
}
public function setUser($user_id) {
$user = $this->db->query("SELECT * FROM users WHERE id='".$user_id."' LIMIT 1");
if($user->num_rows >= 1) {
$user = $user->fetch_object();
$this->user = $user;
}
}
のindex.php
$core = new Core($db,$domain);
$user = new User($_SESSION['user_id']);
明確化:
マイデシベル変数私のconfig.phpファイルから渡された私は、index.phpページの先頭サブクラスは、親クラスのサブクラスを構築する方法がありますある場合 config.phpの
$_db['host'] = 'localhost';
$_db['user'] = 'root';
$_db['pass'] = 'root';
$_db['name'] = 'social';
$db = new mysqli($_db['host'], $_db['user'], $_db['pass'], $_db['name']) or die('MySQL Error');
セッションを開始しましたか?そのセッション配列には値が入っていますか? –
はい、セッションは既に開始されています。私は、$ db変数が継承されていないか何かと関係があると思う。 –
何か起こっている事がある。 $ core = new Core($ db、$ domain);を書く前に変数$ dbをどのように設定するかを教えてください。 – Yolo