如果我没有错,第一部分在我看来是一种静态的方法'路线'上课,但后来我找到了第二部分 ' - 化合物其中(' ID'' [0-9] +&#39);'这似乎是动态的,相对于一个实例,让我感到困惑。
有人可以帮我理解吗?
Route::get('cats/{id}', function($id){
return "Cat #$id";
})->where('id', '[0-9]+');
答案 0 :(得分:4)
If I'm not wrong, the first part seems to me a static method of a 'Route' class
,抱歉,你错了。实际上Laravel
为每个组件提供了Facade
类,此处Route
是基础Facade
类的Router
。这就是Facade
类的样子:
<?php namespace Illuminate\Support\Facades;
/**
* @see \Illuminate\Routing\Router
*/
class Route extends Facade {
/**
* Get the registered name of the component.
*
* @return string
*/
protected static function getFacadeAccessor() { return 'router'; }
}
您可能会注意到,它只包含一个方法,它返回包含该方法的original/underlying
类名,实际上它是key
名称,用于将该类添加到IoC
中} 容器。所以,Laravel
在场景后面,从Illuminate/Routing/Router.php
容器中创建IoC
类的实例并调用method
,它可能看起来不清楚但是它有点棘手并且无法在此处详细回答,但您可以访问Laravel facade并获得更好的解释。
最后,Laravel
调用get()
类中的Router.php
方法,它返回Route
类/对象的实例和where
方法然后使用方法链接(Route
功能)调用PHP-5
类,这就是全部。阅读课程的源代码,你会有更好的想法。
检查Illuminate\Support\Facades
文件夹,您可以找到许多外观类,它们实际上是原始类/组件的包装器。另请查看Laravel
文档中的IoC container,有必要清楚地了解它与Laravel框架一起使用。