Laravel 5 метод не существует в контроллере при использовании PHP _ _ callStatic метод

Я использую Laravel 5.2 на PHP 5.5.9

Вместо жестких методов кодирования в следующем контроллере я использовал метод PHP _ _ callStatic для динамического добавления функциональности. Это работает хорошо, пока я пытался из консоли, но при вызове методов route, я получаю следующую ошибку

Метод AppHttpControllersshowCategory:: latest() не существует

Вот мой маршрут

Route::get('Category/{id}',               'showCategory@latest');

Вот мой контроллер

class showCategory extends Controller
{

public $methods = [
    'latest'        => 'created_at', 
    'newArrival'    => 'created_at', 
    'mostViewed'    => 'views'
];

public function get( $link_or_id, $orderBy = 'created_at' )
{

}

public static function __callStatic($func, $arg)
{

    $category = new self();

    if( array_key_exists( $func, $category->methods ) )
    {

        return $category->get( $arg[0], $category->methods[ $func ] );

    }

} 

}

Есть ли помощь, чтобы указать, где я испортил?

1 ответ

  1. __callStatic () запускается при вызове недоступных методов в статическом контексте.

    showCategory:: latest (); работает

    и это логически, как вы кладете последний метод в маршруты, и вы знаете, если он найден или нет, если вы кладете в маршруты, он должен быть найден в контроллере