Класс 'Db' не найден - PullRequest
0 голосов
/ 07 мая 2018

Когда я пытаюсь подключиться к моей базе данных SQL с помощью моего файла pdo_object.php, мой model.php возвращает эту ошибку:

Fatal error: Class 'Db' not found in /path/model.php on line 8

Я убедился, что все разрешения правильные и учетные данные верны длявсе мои файлы.Вот два файла, о которых идет речь.

Не совсем уверен, в чем проблема, поэтому любая помощь будет потрясающей.

pdo_object.php

<?php
    $user = 'someusername';
    $pass = 'somepassword';
    $db_info='somehost';
    try {
        $db = new PDO($db_info, $user, $pass);

    } catch (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }


    ?>

и затем модель.php

    <?php
include('pdo_object.php');

 class Model{
    public $db;

    public function __construct(){
        $this->db = Db::getDb();
    }

    public function getAllRecords($sql, $parameters = null){
        $stm = $this->db->prepare($sql);
        $stm->execute($parameters);
        return $stm->fetchAll();
    }

     public function getOneRecord($sql, $parameters = null){
                $stm = $this->db->prepare($sql);
                $stm->execute($parameters);
                return $stm->fetch();
        }

}
?>

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Класс Db отсутствовал в файле pdo_object.php, в результате чего файл index.php выдавал ошибку при ссылке на несуществующий класс.

class Db {
      private static $db;
      public static function getDb() {
        if(!self::$db) {
          try {
            $dsn = 'somehost; dbname=somedbname';
            self::$db = new PDO($dsn, 'username', 'password');
            self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            self::$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
          } catch (PDOException $e) {
            die('Connection error: ' . $e->getMessage());
          }
        }
        return self::$db;
      }
    }
0 голосов
/ 07 мая 2018

Где class Db { //blah }? Нигде. Но вы определили $db в первом файле.

Я также рекомендую внедрение зависимостей вместо вызова статических методов класса внутри вашего класса. По сути, передайте $ db в конструктор:

public function __construct(PDO $db)
{
    $this->db = $db;
}

И создать экземпляр так:

$model = new Model($db);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...