我想覆盖全局response function的返回类型,因为我创建了一个覆盖返回的响应类的包。服务提供者正在扩展响应类,而不是默认的7 Tambacounda Market N1 20/09/2017 28,63 Red onion
。这一切都正常工作,并且在通过Laravel IDE helper生成IDE文件时也能识别。
我的问题是只有所述函数的第一次调用才会列出扩展类方法。否则,它会列出phpdocs引用的\Illuminate\Http\Response
接口的方法,这是我想要覆盖的接口。我的界面什么也没做,只是将返回类型更改为我的包的响应类:
\Illuminate\Contracts\Routing\ResponseFactory
我怎样才能做到这一点?
答案 0 :(得分:1)
实现此目标的唯一方法是创建一个自定义app/helpers.php
文件,并在其中覆盖整个Laravel response
函数以及所需的@return类型。如果您通过Composer使用自动加载,则添加
"autoload": {
"files": ["app/helpers.php"]
}
将不工作,因为首先会加载Laravels辅助函数。
您必须在index.php
之前autoload.php
手动要求提供该文件:
require __DIR__ .'/../app/helpers.php';
require __DIR__.'/../vendor/autoload.php';
但请注意,如果不调整phpunit.xml以包含自定义引导文件,这将破坏您的单元测试!
或者,有一个处理优先级问题的作曲家插件(未经测试):https://github.com/funkjedi/composer-include-files
一般情况下,我认为仅仅为了符合IDE而这样做太过于hacky&根本不是一个优势。