Невозможно найти класс, хотя автозагрузчик загрузил файл - PullRequest
0 голосов
/ 24 апреля 2019

Итак, у меня есть каталог, который отражает мою структуру пространства имен.Автозагрузчик правильно загружает файл, содержащий мой класс.предложение use указывает правильный класс с псевдонимом.Несмотря на все это, PHP говорит, что не может найти класс.Я традиционно не использовал пространства имен, потому что это всегда происходит со мной.Но я пытаюсь заставить себя использовать хорошую практику.Итак, я здесь, чтобы попытаться понять, почему я не могу заставить это работать.

Я проверил, что автозагрузчик действительно загрузил файл.Я проверил правильность пути, используемого автозагрузчиком.

мой файл класса:

<?php
namespace classes\helpers\core_helper;

class core_helper
{


  public static function create_arg_pairs($arguments)
  {
  .....
  }


}//end core_helper


?>  

Файл моего основного приложения:

<?php

ini_set("display_errors", "1");

define('AUTH_ROOT', dirname(__FILE__));

use classes\helpers\core_helper as hlpr;


function autoloader($class)
{

  if(require_once AUTH_ROOT.'/'.str_replace('\\','/',$class).'.php');

}
spl_autoload_register('autoloader');

......

$temp = explode("/", substr($path['path'], 1));
//get the controller
$contoller = strtolower(array_shift($temp));
//get the method
$method = strtolower(array_shift($temp));

$argArray = hlpr::create_arg_pairs($temp);


?>  

Полученная ошибка::

Неустранимая ошибка: необнаруженная ошибка: класс 'classes \ helpers \ core_helper' не найден в /var/www/html/auth/index.php:51 Трассировка стека: # 0 {main} брошенов /var/www/html/auth/index.php в строке 51

Однако я знаю, что файл, содержащий этот класс, был загружен, поэтому правильное пространство имен было передано автозагрузчику и преобразованоправильно на правильный путь.Так почему я не вижу класс?

1 Ответ

1 голос
/ 24 апреля 2019

Говоря

namespace classes\helpers\core_helper;

, а затем

class core_helper

вы говорите системе, что ваш реальный класс classes\helpers\core_helper\core_helper. Я ожидаю, что вы действительно хотите namespace classes\helpers;.

...