Фатальная ошибка с spl_autoload

У меня есть этот кусок кода здесь для автоматической загрузки классов:

<?php
$test = [
'includeDirs' => [
'interfacesDir' => __DIR__ . DIRECTORY_SEPARATOR . 'interfaces'. DIRECTORY_SEPARATOR,
'abstractsDir' => __DIR__ . DIRECTORY_SEPARATOR . 'abstracts'. DIRECTORY_SEPARATOR,
'classesDir' => __DIR__ . DIRECTORY_SEPARATOR . 'classes'. DIRECTORY_SEPARATOR
],
'includeExtensions' => [
'classExtension' => '.class.php',
'abstractExtension' => '.abstract.php',
'interfaceExtension' => '.interface.php'
]
];

set_include_path('.');
set_include_path(get_include_path() . PATH_SEPARATOR . implode(PATH_SEPARATOR, $test['includeDirs']));

spl_autoload_extensions(implode(',', $test['includeExtensions']));
spl_autoload_register();

$streamFactory = new StreamFactory();

Но я всегда получаю следующую ошибку:
Неустранимая ошибка: spl_autoload (): не удалось загрузить класс StreamFactory в C: \ Users \ Test \ PhpstormProjects \ Test \ test.php в строке 24

Когда я проверяю пути, которые установлены в пути включения, они верны.
Может кто-нибудь дать мне подсказку, почему эта ошибка выдается?

2

Решение

Вам нужно изменить имя StreamFactory класс для stream_factory и создать его с $streamFactory = new stream_factory(); или переименуйте файл ‘stream_factory.class.php’ в StreamFactory.class.php,

index.php

<?php

error_reporting(-1);
ini_set('display_errors', 'On');

$test = [
'includeDirs' => [
'interfacesDir' => __DIR__ . DIRECTORY_SEPARATOR . 'interfaces'. DIRECTORY_SEPARATOR,
'abstractsDir' => __DIR__ . DIRECTORY_SEPARATOR . 'abstracts'. DIRECTORY_SEPARATOR,
'classesDir' => __DIR__ . DIRECTORY_SEPARATOR . 'classes'. DIRECTORY_SEPARATOR
],
'includeExtensions' => [
'classExtension' => '.class.php',
'abstractExtension' => '.abstract.php',
'interfaceExtension' => '.interface.php'
]
];

set_include_path('.');
set_include_path(get_include_path() . PATH_SEPARATOR . implode(PATH_SEPARATOR, $test['includeDirs']));

spl_autoload_extensions(implode(',', $test['includeExtensions']));
spl_autoload_register();

try {
$streamFactory = new \stream_factory();
} catch(Exception $e) {
echo $e->getMessage();
}

classes/stream_factory.class.php

<?php
class stream_factory {
function __construct() {
echo "Hello from " . __CLASS__;
}
}
1

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

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

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