2013-09-21 19 views
0

У меня возникли проблемы с работой моего кода, он отлично работал, прежде чем пытаться сегментировать все это в отдельные файлы классов. Я получаю сообщение об ошибке 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); 
?> 
+2

Где вы загружаете файл класса? Я вижу попытку создать его экземпляр, и метод автозагрузки, но ничего, что конкретно указывает на эту автозагрузку, попадает в файл UserMethods.php. Кроме того, почему избыточность в массиве каталогов? –

+0

Я на самом деле просто вычислил это, я дважды вызывал один и тот же каталог. Я изменил второй каталог на «Приложения/Пользователь/Пользовательские методы», но теперь я получаю еще несколько ошибок, которые, я думаю, могу решить. – Yamaha32088

+0

'Обманутая фатальная ошибка: Аргумент 1 прошел to DatabaseConnection :: __ construct() должен быть экземпляром PDO, не указанным, вызывается в /var/www/EncoreCMS/test.php в строке 25 и определен в/var/www/EncoreCMS/Applications/Database/Classes/DatabaseConnection. php on line 9' – Yamaha32088

ответ

Смежные вопросы