use в php выводит ошибку syntax error, unexpected '$class_path', expecting '('

Пытаюсь написать функцию автозагрузки на php.

spl_autoload_register( function ( $class ) {
    $class_path = '\app\classes\\';

    $path = str_replace('\\', '/', $class_path);
    include $path . $class . '_class.php';

    $class_path = $class_path . $class;

    use $class_path;

} );

Мне надо подключить файл класса и использовать namespace класса, чтобы использовать статический класс.

use пишет ошибку

syntax error, unexpected '$class_path', expecting '('

Ответы (1 шт):

Автор решения: Евгений Тихии

Autoloader:


<?php

namespace app\core;

/**
 * $rawClassPath    = (example) app\src\controllers\PostController
 * $filePath        = (example) app/src/controllers/PostController.php
 */
spl_autoload_register (function (string $rawClassPath) {
    $filePath = $rawClassPath.'.php';

    if (file_exists ($filePath)) {
        require_once str_replace ('\\', '/', $filePath);
    } else 
        throw new \Exception (
            'File ['.$filePath.'] not found.', 
            500
        );
}); 

Usage:

namespace app;

use app\core\Router;

$exampleVar = Router::exampleStaticMethod ();
→ Ссылка