【问题标题】:How to "import" namespaces in Laravel?如何在 Laravel 中“导入”命名空间?
【发布时间】:2014-10-13 12:58:21
【问题描述】:

我在 Laravel 中构建了一个 API,版本如下:

/controllers/api/v1/CommentController.php
/controllers/api/v2/CommentController.php

在我的路线中,我这样调用正确的控制器:

Route::resource('notification', 'api\v2\CommentController');

这可行,但由于我在控制器中使用命名空间,所以我必须使用 \ 方法才能在根命名空间中找到 \Response 之类的类?

 namespace api\v1;
 class NotificationController extends \BaseController {
     public function index()()
     {
        return \Response::json({});
     }
 }

有没有办法避免使用反斜杠符号并使用正确的命名空间? 我尝试使用 use \App; 但没有结果

【问题讨论】:

    标签: laravel-4 namespaces


    【解决方案1】:

    你需要添加“使用响应;”到你的代码。

    <?php namespace api\v1;
    use Response;
    class CommentController extends \BaseController {
    public function index()
    {
        return Response::json('hello');
    }
    }
    

    【讨论】:

    • 谢谢。我应该像我的所有模型一样为我使用的每个类都这样做,还是有一个“基础”命名空间我可以以某种方式使用,比如“使用\”
    • 我认为没有办法像你想要的那样添加“基础”命名空间。我唯一能说的是:如果您在 \api\v1\ 命名空间中使用 Response 或任何模型类,它将被解释为 \api\v1\Response 类。由于您不想拥有以前的命名空间,因此您可以在 Response 之前使用 \ ,例如: \Response::() 或在类的顶部使用 use 语句,例如 use Response;
    • 如果 BaseController 在同一个命名空间中,即它是 api\v1\BaseController 那么你也可以省略斜杠。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 2021-02-26
    • 2021-10-03
    • 2012-11-27
    • 2010-09-05
    相关资源
    最近更新 更多