使用PHP __callStatic方法

时间:2016-11-08 10:37:03

标签: php laravel laravel-5

我在PHP 5.5.9上使用Laravel 5.2

我使用PHP __callStatic方法动态添加功能,而不是以下控制器中的硬编码方法。我从Console尝试时工作正常但是在调用方法路由时,我收到以下错误

方法App \ Http \ Controllers \ showCategory :: 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 个答案:

答案 0 :(得分:0)

在静态上下文中调用不可访问的方法时会触发

__ callStatic()。

showCategory ::最新();它的工作原理

从逻辑上讲,你如何在路线中放置最新的方法,你知道它是否被发现,如果你输入路线,它必须在控制器中找到