Open4

PHP 自作MVCフレームワークメモ

ぐてぃおぐてぃお

ルーティングのコントローラーとアクションをキャメルケース、アッパーキャメルケースに変換してクラス、メソッドを探す。
存在しなければException

ぐてぃおぐてぃお

spl_autoload_register()でautoloadする
spl_autoload_register()はインスタンス化の際、requireされてないクラスを探しに行くフックを記述することができる

spl_autoload_register(function ($class) {
    $root = dirname(__DIR__);   // get the parent directory

    $file = $root . '/' . str_replace('\\', '/', $class) . '.php';

    if (is_readable($file)) {
        require $root . '/' . str_replace('\\', '/', $class) . '.php';
    }
});

https://qiita.com/misogi@github/items/8d02f2eac9a91b4e6215

ぐてぃおぐてぃお

__callマジックメソッドを利用し、呼び出されたアクションメソッドが存在しない場合は、
call_user_func_array()で~Actionメソッドが呼び出せる

public function __call(string $name, array $args)
    {
        $method = $name . 'Action';

        if (method_exists($this, $method)) {
                call_user_func_array([$this, $method], $args);
            }
        } else {
            echo "Method $method not found in controller " . get_class($this);
        }
    }