关于名称空间,laravel工厂帮助函数是如何工作的


How do the laravel factory helper functions work with regards to namespacing?

好吧,这是一个相当具体的问题,我不一定期待得到回应,但如果有人能给我指出正确的答案就太好了。所以我一直在阅读Laravel的文档,我遇到了一个部分(http://laravel.com/docs/5.1/responses#basic-responses),有以下关于生成响应对象的建议:

返回一个完整的响应实例允许您自定义响应的HTTP状态码和头。响应实例继承从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()函数中发生了什么,这意味着我们不必这样做?

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

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

Illuminate'Http'Response类是命名空间的,所以它需要一个use语句。

Laravel helper函数位于vendor/Laravel/framework/src/Illuminate/Foundation/helpers.php中,该文件没有命名空间设置。如果是,你会看到namespace Illuminate/Foundation在它的顶部