我的PhpStorm 2016.1.2的 Code Inspector (安装了Laravel插件)说明了以下代码。
<?php
$this->app['router']->group(
['namespace' => 'Foo\Access\Controllers'],
function() {
$this->app['router']->post('auth/login', ['uses' => 'AuthController@login']);
}
);
我如何告诉PhpStorm $this-app['router']
引用Illuminate\Routing\Router
?
答案 0 :(得分:1)
api.php
路由文件包含在RouteServiceProvider.php
(在app / Providers上)的mapApiRoutes
方法上(参见source code)。你会看到类似的代码:
protected function mapApiRoutes()
{
Route::group([
'middleware' => 'api',
'namespace' => $this->namespace,
'prefix' => 'api',
], function ($router) {
require base_path('routes/api.php');
});
}
这意味着您可以在$router
上使用名为$this->app['router']
的变量而不是api.php
。仅此一点,IDE不足以实现变量$router
的类型,但您可以使用PHPdoc。类似的东西:
<?php
/**
* @var \Illuminate\Routing\Router $router
*/
$router->group(
['namespace' => 'Foo\Access\Controllers'],
function() use ($router) {
$router->post('auth/login', ['uses' => 'AuthController@login']);
}
);
现在,这有一个缺点,因为->group
内的路由是在闭包中定义的,您需要通过$router
发送use ($router)
变量。
答案 1 :(得分:1)
解决方案非常简单。我更改了对象的数组访问权限。
<?php
$this->app->router->group(
['namespace' => 'Foo\Access\Controllers'],
function() {
$this->app->router->post('auth/login', ['uses' => 'AuthController@login']);
}
);