Не удалось вызвать конструктор класса

Я был занят, пытаясь создать свою собственную платформу (чтобы стать более опытным в этой области), и наткнулся на ошибку, которую я не мог исправить, выполнив поиск в Google … вау …

Я хочу получить данные из базы данных, помещенной в объект / класс. Я делал это раньше, другим способом, которым я учился в школе, но я хотел настроить его и сделать его более динамичным, чтобы я мог использовать его в своей структуре.

Проблема, с которой я столкнулся, заключается в следующем:

SQLSTATE[HY000]: General error: could not call class constructor on line 96

Это функция в моем классе базы данных:

public function getObject($query, $classRootPath)
{
try {
//Check if slashes are double already and make them if not
if(!strpos($classRootPath, "\\\\")) {
$classRootPath = str_replace("\\","\\\\",$classRootPath);
}

$statement = $this->pdo->prepare($query);
$statement->execute(\PDO::FETCH_CLASS, "Campers\\Camper"); // I want this path to be $classRootPath once it is working with this dummy data
return $statement->fetchAll();

// return $this->pdo->query($query)->fetchAll(\PDO::FETCH_CLASS, "Campers\\Camper");

} catch (\PDOException $e) {
throw new \Exception("DB receive object failed: " . $e->getMessage());
}
}

Эта функция вложена в Database и класс называется Database / Database.php

Следующий класс вложен в Campers и называется Camper.php

class Camper {
public $ID, $date, $camperID;

public function __construct($ID, $date, $camperID)
{
$this->ID = $ID;
$this->date = $date;
$this->camperID = $camperID;
}
}

Единственная причина, по которой я могу думать, что это не работает, это то, что звонок "Campers\\Camper" звонит сверху Database, но я не знаю, как избежать этого. Я пробовал с ..\ но я получил ошибки назад, и это самое близкое, что я могу получить. Здесь он может найти класс, но не может найти конструктор Camper

Я проверил, работает ли мой класс / соединение БД, так что это не ошибка.

Структура моей таблицы соответствует моей Campers конструктор класса.

1

Решение

От PSR-4 spec:

Имя завершающего класса соответствует имени файла, оканчивающемуся на .php. Имя файла ДОЛЖНО совпадать с регистром имени завершающего класса.

Вы, вероятно, не можете создать экземпляр этого Camper класс как есть в любом случае. PSR-4 ожидает, что ваше имя файла соответствует классу. Он должен быть расположен в framework/Campers/Camper.php,

1

Другие решения

Эта ошибка подразумевает, что более чем не удалось вызвать конструктор, она также используется для указания того, что произошла ошибка при ее вызове.

В моем случае, исключение было брошено внутри конструктора. Если вы не распечатываете / не регистрируете трассировку стека, вы можете легко пропустить ее.

Наслаждайтесь!
🙂

0

По вопросам рекламы [email protected]