>source
라 라벨 애플리케이션에서 InvokableController라는 컨트롤러를 만들었습니다. 이 기능을 포함합니다 :

public function __invoke()
{
    return view('home');
}

다음과 같이 __invoke 메소드를 호출하고 싶습니다 :

Route::get('/', function () {
    $invokableObj = new InvokableController();
    $invokableObj();
})->name('home');

작동하는 동안 :

Route::get('/', 'InvokableController')->name('home');

찾고 싶은 것이 아닙니다. 이런 식으로 invoke 메소드를 호출하고 싶습니다.

$invokableObj = new InvokableController();
$invokableObj();

InvokableController 후에 괄호를 사용하거나 사용하지 않고 시도했습니다. $invokableObj 를 지정하는 행에서 , 운이 없다.

오류 메시지가 없습니다. 클로저 하단에 숫자 1과 같은 다른 것을 반환하려고 시도했지만 브라우저에서 1을 렌더링하므로 이전 코드 줄을 통과하고 있음을 알았습니다.

APP_DEBUG   true 입니다 . 내가 엉망인 다른 오류 메시지가 렌더링됩니다. 이것이 일종의 논리적 인 오류가됩니까?

  • 답변 # 1

    그냥 수업 이니까 $invokableObj->__invoke()  잘 작동합니다. 또는 laravel DI를 사용할 수 있습니다 :

    app()->call(InvokableController::class . '@__invoke');
    Route::get('/', function () {
        return app()->call(InvokableController::class . '@__invoke'); 
        // or
        $invokableObj = new InvokableController();
        return $invokableObj->__invoke();
    })->name('home');
    
    

관련 자료

  • 이전 html - 여러 클래스에 동일한 스타일을 부여하는 방법
  • 다음 c++ - CGAL_USE_BASIC_VIEWER