Laravel 5 使用语句

Laravel 5 use statements

第一次与 Laravel 5 合作。我了解名称空间的使用以及您需要使用它们的原因。我不明白的是为什么我需要添加如下的使用语句(在控制器的顶部):

use Session;
use Input;
use Response;

我必须这样做,这样我才不会遇到像这样的致命异常:

Class 'App\Http\Controllers\Session' not found

也许我漏掉了什么??这些 类 似乎是框架的一部分,默认情况下在 L4.x.

任何人都可以帮助我理解为什么在 L5 中如此,或者我如何才能避免在 L5 中这样做?

谷歌在这方面让我失望了。

在文件中使用 use 语句的过程称为别名或导入。 http://php.net/manual/en/language.namespaces.importing.php 给出了很好的解释,但简而言之:

  • 如果您使用 'relative' 或仅引用 class 的名称(例如 Session)引用 class,则 PHP 将检查当前命名空间是否存在 class.
  • Laravel 4 控制器在技术上不在命名空间中。它们是应用程序根命名空间的一部分,因此对根命名空间 (Session) 中另一个 class 的引用会找到它。 Laravel 5 控制器在 App\Http\Controllers\ 中命名空间。
  • 解决这个问题的唯一方法是告诉 PHP 给定 class 的完整命名空间,例如在本例中 \Session,因为这些 classes作为根命名空间的一部分添加。例如 new \App\MyCompany\Models\SomeModel();
  • class 文件顶部的 "use" 语句允许您将这些完整的 class 路径作为任何您想要的别名。 use \App\MyCompany\Models\SomeModel as Foo 将允许您执行 new Foo() 并获得 \App\MyCompany\Models\SomeModel 的实例。 (大多数人会省略 'as' 语句,仅引用 new SomeModel()
  • 在尝试利用位于与当前 class。它是一种有用的语言构造,而不是限制。

希望这是有道理的。