laravel工厂辅助函数如何在命名空间方面起作用?

时间:2015-07-27 04:31:57

标签: php laravel namespaces laravel-5

好的,所以这是一个相当具体的问题,我不一定期待回应,但如果有人能指出我正确的方向来回答,那就太好了。所以我一直在阅读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()函数中发生了什么,这意味着我们不必这样做?

1 个答案:

答案 0 :(得分:1)

这实际上是标准PHP namespacing,而不是Laravel正在做的事情。只有在使用命名空间类时才需要use语句。

response()辅助函数未命名空间(它位于全局命名空间中),因此它不需要use语句。

Illuminate\Http\Response类是命名空间,因此需要use语句。

Laravel帮助程序函数驻留在vendor/laravel/framework/src/Illuminate/Foundation/helpers.php中,并且此文件没有设置名称空间。如果是这样,您会在其顶部看到namespace Illuminate/Foundation