Класс PHP SplClassLoader не найден

используя SplClassLoader я продолжаю получать class not found ошибка. Я пробовал разные источники, скопировал их точную структуру папок и имен, но все же not found,

Моя структура

application
- Router
- Exceptions
- HttpException.php
- Klein.php
index.php
SplClassLoader.php

index.php

$loader = new SplClassLoader('application', 'application');
$loader->register();
$klein = new \router\Klein();

Klein.php

namespace application\router;
class Klein{
__construct()

HttpException.php

namespace Klein\Exceptions;

use RuntimeException;

class HttpException extends RuntimeException implements HttpExceptionInterface
{

Как мне включить оба из них с classLoader?

Точная ошибка:
Fatal error: Class 'router\Klein' not found in /home/i366963/domains/[domain]/private_html/public/index.php on line 44

строка 44 $klein = new \router\Klein();

Предложение:

$loader = new SplClassLoader('application', 'application');
$loader->register();
$klein = new application\Router\Klein();

давать ошибку:

Warning: require(application/application/Router/Klein.php): failed to open stream: No such file or directory in /home/i366963/domains/[domain]/private_html/SplClassLoader.php on line 140

Fatal error: require(): Failed opening required 'application/application/Router/Klein.php' (include_path='.:/usr/local/lib/php') in /home/i366963/domains/[domain]/private_html/SplClassLoader.php on line 140

0

Решение

Итак, глядя на подпись SplClassLoader, он ожидает два параметра

$ ns (пространство имен)

$ INCLUDEPATH

Итак, прямо сейчас вы добавляете пространство имен «application» и выполняете поиск в каталоге «application».

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

Поэтому, когда вы загружаете \ application \ router, он просматривает каталог application \ application.

Вы можете решить этим, выполнив $loader = new SplClassLoader('application'); Это означает, что он будет просто искать в текущем каталоге.

Теперь, посмотрев на другие опубликованные классы, вы столкнетесь с проблемами, если ваши пространства имен не соответствуют стандарту PSR-0, поэтому вам необходимо убедиться, что ваши пространства имен точно соответствуют структуре каталогов и имени файла (это чувствительно к регистру при любая система * nix)

1

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

Других решений пока нет …

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