Я искал ответ «высоко» и «низко» и пробовал каждый пример, но мне все равно не удалось найти мои уроки. Почему я продолжаю получать Фатальная ошибка: Класс ‘ProjectMorpheus \ model \ Database’ не найден в C: \ Portables \ xampp \ htdocs \ ProjectMorpheus \ config \ config.php в строке 23
/ProjectMorpheus
/model
Database.class.php
/config
config.php
Итак, мой класс Database имеет пространство имен, подобное этому:
namespace ProjectMorpheus\model;
class Database { ... }
Наконец, мой config.php имеет функцию автозагрузчика (Примечание: __SITE_PATH = ‘C: \ Portables \ xampp \ htdocs \ ProjectMorpheus \’):
/*** auto load model classes ***/
function __autoload($class){
$parts = explode('\\', $class);
include __SITE_PATH . 'model/' . end($parts) . '.class.php';
}
$dbh = \ProjectMorpheus\model\Database::getInstance($dsn, $username, $password);
Использование spl_autoloader работает, но почему? Мое единственное предположение, что $ class не одинаков в обоих случаях. Моя функция spl_function выглядит так:
spl_autoload_register(function($class){
$parts = explode('\\', $class);
include __SITE_PATH . 'model/' . end($parts) . '.class.php';
});
Почему ты не используешь PSR-0 или же PSR-4 Стандарты автозагрузчика?
У них даже есть готовый класс автозагрузчика на GitHub Пока вы будете следовать правилам, у вас не будет никаких проблем, и ваш код будет PSR.
Хотя я бы не советовал, но если вы хотите настаивать на использовании приведенного выше кода для автозагрузки классов (только в папке моделей), попробуйте сбросить значение этого параметра. __SITE_PATH . 'model/' . end($parts) . '.class.php';
и проверьте, можете ли вы получить к нему доступ. Вы можете даже попытаться скопировать и вставить путь к вашему файловому броузеру, чтобы увидеть, доступно ли это местоположение и существует ли файл в этом каталоге.
Постскриптум Я пытался добавить это как комментарий, но не смог из-за низкой репутации. очки (будучи новым здесь и все).
Других решений пока нет …