2

データベース用の小さな RESTful API を作成しようとしていますが、ユーザーの要求に基づいてコントローラー オブジェクトを動的に作成する際に問題が発生しました。これは、すべてのコードが名前空間を使用しており、次のことを行っているためです。

$api = new $controllerName($request);

うまくいきません。「ReadController」に解決されるため$controllerName、実際に\controllers\lottery\ReadControllerはエラーです

クラスへのパスを定義する全体の部分は次のとおりです。

if ($method === 'GET') {
    $controllerName = 'ReadController';
    // @NOTE: $category is a part of $_GET parameters, e.g: /api/lottery <- lottery is a $category
    $controllerFile = CONTROLLERS.$category.'/'.$controllerName.'.php';
    if (file_exists($controllerFile)) {
        include_once($controllerFile);

        $api = new $controllerName($request);
    } else {
        throw new \Exception('Undefined controller');
    }
}

そして、core\controllers\lottery\ReadController.php の ReadController の宣言

namespace controllers\lottery;

class ReadController extends \core\API {

}

オブジェクトを動的に作成する方法はありますか?

ありがとう!

4

1 に答える 1