接続クラスの外部でクエリを実行しようとすると、次のエラーが発生します。クラス外のPDOを使用する未定義のメソッド
Fatal error: Call to undefined method Core\Database::query() in...
以下のファイルがあります。
database.phpで
namespace Core;
use \PDO;
class Database
{
private $pdo;
private static $instance;
private function __construct()
{
try {
$this->pdo = new PDO("mysql:host=localhost;dbname=db;", "root", "pw");
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (\PDOException $e) {
echo $e->getMessage();
}
}
public static function getInstance()
{
if (!isset(self::$instance))
self::$instance = new Database();
return self::$instance;
}
}
Auth.phpあなたの助けを事前に
namespace Auth;
use Core\Database;
class Auth
{
protected $dbh;
public function __construct()
{
$this->dbh = Database::getInstance();
$query = $this->dbh->query("SELECT * FROM table");
}
}
感謝。
エラーのように、データベースクラスにはクエリメソッドがありません。 getInstance()は、PDOではなくDatabaseクラスのインスタンスを返します。 – Devon
@Devon、ok:Auth.phpで '$ this-> dbh-> query'を' $ this-> dbh-> pdo-> query'に変更しましたが、それ以外の方法はありますか?ちょっと混乱しているようです。 – lingo
また、インスタンス変数 '$ pdo' * public *を作成してください。そうしないと、特にAuthから' - > query(...) 'を呼び出すときにクラスの外部にアクセスすることができなくなります。クラス。 –