【问题标题】:Laravel 4+ namespacing - why do I have to import?Laravel 4+ 命名空间 - 为什么我必须导入?
【发布时间】:2014-12-19 16:30:52
【问题描述】:

laravel 中的命名空间很简单,给类起别名也很好,但是我必须为输入、重定向等每条路由中几乎显而易见的最基本的类起别名。没有命名空间我不必使用这些它们是预加载的并确定。

我如何在使用命名空间的同时保留仅使用 Input & Redirect & Eloquent 的能力,而不必在我想使用的每个类中进行别名/导入?

谢谢

【问题讨论】:

    标签: php laravel laravel-4 namespaces laravel-5


    【解决方案1】:

    这就是命名空间的工作方式。 PHP Docs on namespaces 很好地解释了从不同命名空间导入/别名类的需要。

    就您对 Laravel 外观的问题而言,您可以通过在类名前加上 \ 来在其他名称空间中使用它们,因为它们已在全局名称空间中注册。因此,如果您不喜欢导入它们或使用完全限定的命名空间,这就足够了:

    $param = \Input::get('param');
    return \Redirect::route('route');
    

    您可以在app/config/app.phpaliases下注册其他全局别名。

    【讨论】:

      【解决方案2】:

      这是因为在 Laravel 5 中,大多数类(如模型、控制器、中间件、请求)都位于某个命名空间中。当您想从其他命名空间访问类时,您需要先使用完全限定类(带命名空间的类)或导入类,然后再使用较短的版本。否则,您可以从同一个命名空间访问类。

      我想强调一下 - 这不是 Laravel 的问题,而是命名空间在 PHP 中的工作方式

      更多解释,你也可以阅读How to use objects from other namespaces and how to import namespaces in PHP

      【讨论】:

        猜你喜欢
        • 2019-02-19
        • 2015-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-31
        • 2012-09-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多