Laravel 4+命名空间 - 为什么我必须导入?

时间:2014-10-23 21:21:30

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

laravel中的命名空间是直截了当的,并且对类进行别名很好,但是我必须为每个路径中几乎显而易见的最基本的类别命名,如输入,重定向等。没有命名空间我不必使用它们它们是预先加载的并确定。

如何同时使用命名空间保留仅使用输入和放大器的功能重定向&雄辩,不必在我想要使用的每个类别中使用别名/导入?

由于

2 个答案:

答案 0 :(得分:1)

这就是命名空间的工作原理。 PHP Docs on namespaces为从不同名称空间导入/别名类的需要提供了很好的解释。

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

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

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

答案 1 :(得分:1)

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

我想强调 - 它不是Laravel问题,它是如何在PHP中使用命名空间

有关进一步说明,您还可以阅读How to use objects from other namespaces and how to import namespaces in PHP