首次使用Laravel 5。我理解名称空间的使用以及为什么需要使用它们。我不明白为什么我需要添加如下所示的使用语句(在控制器的顶部):
use Session;
use Input;
use Response;
我必须这样做,以便我不会得到致命的例外,例如:
Class 'App\Http\Controllers\Session' not found
也许我错过了什么?这些类似乎是框架的一部分,默认情况下是L4.x。
任何人都可以帮助我理解为什么在L5中会出现这种情况,或者我如何避免在L5中执行此操作?
谷歌在这一次失败了。
答案 0 :(得分:2)
在文件中使用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
语句添加到类中。它是一种有用的语言结构,而不是限制。希望这是有道理的。