首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5使用说明

Laravel 5使用说明
EN

Stack Overflow用户
提问于 2015-03-12 03:02:09
回答 1查看 6K关注 0票数 5

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

代码语言:javascript
复制
use Session;
use Input;
use Response;

我必须这样做,这样我才不会有致命的例外,比如:

代码语言:javascript
复制
Class 'App\Http\Controllers\Session' not found

也许我错过了什么??这些类似乎是框架的一部分,在L4.x中是默认的。

有人能帮助我理解为什么在L5中会出现这种情况,或者我如何才能避免使用L5这样做呢?

谷歌在这个问题上辜负了我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-12 03:28:26

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

  • 如果使用“相对”或仅使用类名(如Session)引用类,PHP将检查当前命名空间是否存在该类。
  • Laravel 4控制器在技术上不是在名称空间中。它们是应用程序根命名空间的一部分,因此,对根命名空间(Session)中另一个类的引用就会发现这一点。Laravel 5控制器在App\Http\Controllers\中具有命名空间。
  • 解决这个问题的唯一方法是告诉PHP给定类的完整名称空间,例如在本例中是\Session,因为这些类是作为根命名空间的一部分添加的。一个例子是类似于new \App\MyCompany\Models\SomeModel();
  • 类文件顶部的"use“语句允许您将这些完整的类路径化名为您想要的任何东西。use \App\MyCompany\Models\SomeModel as Foo将允许您执行new Foo()并获取\App\MyCompany\Models\SomeModel的实例。(大多数人会删除“as”语句,只需引用new SomeModel())
  • 在尝试利用与当前类不同的名称空间中的类时,无需也不需要尝试避免将这些use语句添加到类中。它是一种有用的语言结构,而不是一种限制。

希望这是合理的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29001191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档