第一次使用 Laravel 5。我了解命名空间的使用以及为什么需要使用它们。我不明白的是为什么我需要添加如下所示的 use 语句(在控制器的顶部):
use Session;
use Input;
use Response;
Run Code Online (Sandbox Code Playgroud)
我必须这样做,这样我就不会遇到致命的异常,例如:
Class 'App\Http\Controllers\Session' not found
Run Code Online (Sandbox Code Playgroud)
也许我错过了什么?这些类似乎是框架的一部分,默认情况下位于 L4.x 中。
谁能帮助我理解为什么在 L5 中会出现这种情况,或者我如何避免在 L5 中这样做?
谷歌在这一点上让我失望了。
小智 5
在文件中使用语句的过程use称为别名或导入。http://php.net/manual/en/language.namespaces.importing.php对此给出了很好的解释,但简而言之:
Session)引用一个类,PHP 将检查当前名称空间是否存在该类。Session将找到这一点。Laravel 5 控制器的命名空间为App\Http\Controllers\.\Session,因为这些类被添加为根命名空间的一部分。一个例子是这样的new \App\MyCompany\Models\SomeModel(); use \App\MyCompany\Models\SomeModel as Foo将允许您执行new Foo()并获取 的实例\App\MyCompany\Models\SomeModel。(大多数人会省略“as”声明,而只是引用new SomeModel())use当尝试利用与当前类不同的命名空间中的类时,没有办法也无需尝试避免将这些语句添加到您的类中。它是该语言的有用构造,而不是限制。希望这是有道理的。
| 归档时间: |
|
| 查看次数: |
6275 次 |
| 最近记录: |