好的,所以这是一个相当具体的问题,我不一定期待回应,但如果有人能指出我正确的方向来回答,那就太好了。所以我一直在阅读Laravel的文档,我遇到了一个部分(http://laravel.com/docs/5.1/responses#basic-responses),它有关于生成响应对象的以下建议:
返回完整的Response实例允许您自定义 响应的HTTP状态代码和标头。 Response实例继承 从Symfony \ Component \ HttpFoundation \ Response类中,提供一个 构建HTTP响应的各种方法:
use Illuminate\Http\Response; Route::get('home', function () { return (new Response($content, $status)) ->header('Content-Type', $value); });
为方便起见,您还可以使用响应助手:
Route::get('home', function () { return response($content, $status) ->header('Content-Type', $value); });
所以我的问题是,关于后一个代码示例,为什么他们不再需要包含use Illuminate\Http\Response;
导入?或者更具体地说,response()函数中发生了什么,这意味着我们不必这样做?
答案 0 :(得分:1)
这实际上是标准PHP namespacing,而不是Laravel正在做的事情。只有在使用命名空间类时才需要use
语句。
response()
辅助函数未命名空间(它位于全局命名空间中),因此它不需要use
语句。
Illuminate\Http\Response
类是命名空间,因此需要use
语句。
Laravel帮助程序函数驻留在vendor/laravel/framework/src/Illuminate/Foundation/helpers.php中,并且此文件没有设置名称空间。如果是这样,您会在其顶部看到namespace Illuminate/Foundation
。