У меня возникли проблемы с работой моего кода, он отлично работал, прежде чем пытаться сегментировать все это в отдельные файлы классов. Я получаю сообщение об ошибке Fatal error: Class 'UserMethods' not found in /var/www/EncoreCMS/test.php on line 25
. У меня есть файл DatabaseConnections.php
, который содержит класс и методы для установления соединения с базой данных. Существует также файл UserMethods.php
, который имеет метод retrievePassword()
, хранящийся в классе UserMethods
. Мой код ниже:Класс не найден Ошибка
DatabaseConnections.php:
<?php
require '/resources/library/DB.php';
class DatabaseConnection
{
private $conn = null;
public function __construct(PDO $conn)
{
$this->conn = $conn;
}
protected function getConnection()
{
return $this->conn;
}
}
?>
UserMethods.php:
<?php
class UserMethods extends DatabaseConnection
{
public function retrievePassword($userName)
{
$stmt = $this->getConnection()->prepare('SELECT `password` FROM `users` WHERE `userName`= :userName');
$stmt->bindValue(':userName', $userName);
$stmt->execute();
$salt = $stmt->fetchColumn();
return $salt;
}
public function retrievePictures($userName)
{
$stmt = $this->getConnection()->prepare('SELECT `userName` FROM `users` WHERE `userName`= :userName');
$stmt ->bindValue(':userName', $userName);
$stmt->execute();
$user = $stmt->fetchColumn();
return $user;
}
}
?>
test.php:
<?php
ini_set('display_errors', true);
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
require "$root/resources/library/DB.php";
function __autoload($class_name)
{
//class directories
$directorys = array(
'Applications/Database/Classes/',
'Applications/User/Classes/'
);
//for each directory
foreach($directorys as $directory)
{
//see if the file exsists
if(file_exists($directory.$class_name . '.php'))
{
require_once($directory.$class_name . '.php');
//only require the class once, so quit after to save effort (if you got more, then name them something else
return;
}
}
}
$userName = "testuser";
$a = new UserMethods($conn);
echo $a->retrievePassword($userName);
?>
Где вы загружаете файл класса? Я вижу попытку создать его экземпляр, и метод автозагрузки, но ничего, что конкретно указывает на эту автозагрузку, попадает в файл UserMethods.php. Кроме того, почему избыточность в массиве каталогов? –
Я на самом деле просто вычислил это, я дважды вызывал один и тот же каталог. Я изменил второй каталог на «Приложения/Пользователь/Пользовательские методы», но теперь я получаю еще несколько ошибок, которые, я думаю, могу решить. – Yamaha32088
'Обманутая фатальная ошибка: Аргумент 1 прошел to DatabaseConnection :: __ construct() должен быть экземпляром PDO, не указанным, вызывается в /var/www/EncoreCMS/test.php в строке 25 и определен в/var/www/EncoreCMS/Applications/Database/Classes/DatabaseConnection. php on line 9' – Yamaha32088