Fatal error: Uncaught Error: Call to a member function prepare() on null in E:\IT\OpenServer\domains\bookshop\application\lib\Db.php:26 Stack trace: #0 E:\IT\OpenServer\domains\bookshop\application\lib\Db.php(31): application\lib\Db::prepare() #1 E:\IT\OpenServer\domains\bookshop\application\lib\Db.php(39): application\lib\Db::run() #2 E:\IT\OpenServer\domains\bookshop\application\models\Account.php(10): application\lib\Db::sql() #3 E:\IT\OpenServer\domains\bookshop\application\controllers\AccountController.php(31): application\models\Account::addUser() #4 E:\IT\OpenServer\domains\bookshop\application\core\Router.php(58): application\controllers\AccountController->signupAction() #5 E:\IT\OpenServer\domains\bookshop\index.php(16): application\core\Router->run() #6 {main} thrown in E:\IT\OpenServer\domains\bookshop\application\lib\Db.php on line 26
Db.php
<?php
namespace application\lib;
use PDO;
class Db
{
public static $db;
public function __construct() {
$config = require 'application/config/db.php';
try {
self::$db = new PDO(
'pgsql:host=' . $config['host'] . SPACE .
'port=' . $config['port'] . SPACE .
'dbname=' . $config['dbname'] . SPACE .
'user=' . $config['user'] . SPACE .
'password=' . $config['password']
);
} catch (\Exception $e) {
echo $e->getMessage();
}
}
public static function query($stmt) {return self::$db->query($stmt);}
public static function prepare($stmt) {return self::$db->prepare($stmt);}
public static function exec($query) {return self::$db->exec($query);}
public static function run($query, $args = []) {
if(!$args) {return self::query($query);}
$stmt = self::prepare($query);
$stmt->execute($args);
return $stmt;
}
public static function GetRow($query, $args = []) {return self::run($query, $args)->fetch();}
public static function GetRows($query, $args = []) {return self::run($query, $args)->fetchAll();}
public static function GetColumn($query, $args = []) {return self::run($query, $args)->fetchAll(PDO::FETCH_COLUMN);}
public static function sql($query, $args = []) {self::run($query, $args);}
}
Account.php (обращаюсь к бд)
<?php
namespace application\models;
use application\core\Model;
use application\lib\Db;
class Account //extends Model
{
public static function addUser($nickname, $login, $password, $email) {
Db::sql("INSERT INTO users (nickname, login, password, email)
VALUES (?, ?, ?, ?)", [$nickname, $login, $password, $email]);
}
}
