这是在使用Symfony框架不的遗留PHP应用程序中发生的,只使用了部分Http-Foundation。所以没有什么是为我们创建请求,而是在一些设置代码中使用GLOBALS创建它。这是作为现代化过程的一部分完成的(遵循Paul M. Jones的书,第5章:用依赖注入替换全局)。
它工作得很好,比整个地方都有$_GET
,$_SERVER
等好得多......除了每次在那里访问Request对象中的字段时在PhpStorm中#39警告:
" Field' server'在静态"
中找不到
如果我从Request::createFromGlobals
(@return static
)删除PHPDoc或将其更改为(@return self
),则PhpStorm可以根据需要运行。
或者,如果我自己使用GLOBALS($request = new Request($_GET, $_POST, array(), $_COOKIE, $_FILES, $_SERVER);
)创建请求,就像createFromGlobals()
正在做的那样,那么PhpStorm很高兴。
有没有办法在使用Request::createFromGlobals()
时解决这个问题?
编辑:解决方案,感谢@LazyOne,添加以下typehint更改:
/** @var Request $request */
$request = Request::createFromGlobals();