Добрый день. Помогите пожалуйста разобраться с проблемой. Делаю автозагрузку классов. Структура такая, в корне сайта есть index.php в нем с помощью require() подключается файл с настройками config.php и ниже создание экземпляра класса постов Post.
require('./config.php');
$post = new \Vendor\Blog\Post();
В config.php есть настройки для подключения к БД, функция автозагрузки классов project_autoload() и ее регистрация через spl_autoload_register(). Подключаемые классы находятся /lib/Vendor/Blog/ относительно корневой папки сайта.
function project_autoload($className)
{
$className = ltrim($className, '\\');
$fileName = $_SERVER['DOCUMENT_ROOT'].'/lib/';
$namespace = '';
if ($lastNsPos = strrpos($className, '\\')) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName .= str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
require_once($fileName);
}
Класс DB.php содержит следующий код:
namespace Vendor\Blog\DB;
class DB
{
//code
}
Класс Post.php содержит следующий код:
namespace Vendor\Blog\Post;
use Vendor\Blog\DB;
class Post extends DB
{
//code
}
Выдает ошибку:
Fatal error: Class 'Vendor\Blog\DB' not found in ....../public_html/lib/Vendor/Blog/Post.php on line 7
7 строка, это строка со скобкой { в начале:
class Post extends DB
{
public $id;