我不懂路由
I don't understand routing
我正在尝试学习 PHP 框架。但是我在理解路由的一些概念时遇到了一些困难。
我选择使用 Flight。他们的主页显示:
require 'flight/Flight.php';
Flight::route('/', function(){
echo 'hello world!';
});
Flight::start();
而且我不明白他们 Flight::route...
的用途。我错过了什么?这个问题甚至与飞行无关。它与一般路由有关。
Flightphp 对如何设置路由有比较全面的解释here。
您应该将路由视为如何处理不同请求模式的定义。
Flight 主页上的示例表示,如果您点击站点根目录(即 /),它将简单地 return "hello world!" 作为响应。
如果您进一步阅读 Flightphp 安装页面,您会注意到所有请求都由 index.php 页面处理。因此,根据您定义的路由,它会回复为该 url 请求模式定义的相关响应。
route() 看起来是一个静态函数,这意味着它不是特定于对象的,即你不能创建一个对象,例如
$flight = new Flight();
然后调用
$flight->route(...)
而是您通过 class 调用它(不是对象,它是 class 的特定实现)。您可以使用 :: 调用 class 的静态函数,在本例中为
Flight::route(...)
路由的内容只是说,当你遇到'/'时,做'X'...而你的情况'X'是
function(){
echo 'hello world!';
}
在后面的阶段你可以匹配
'/' (homepage, i.e. "mywebsite.com/")
'/about-us' (About Us page, i.e. "mywebsite.com/about-us")
'/user/{id}' (User page, i.e. you can pass a parameter such as "mywebsite.com/user/taylor" and then get the user data)
或任何你想要的。而不是仅仅将功能写入路由文件,您可以告诉路由器转到特定功能(通常是控制器功能),您可以在那里做更多的事情。
希望对您有所帮助!
Flight::route('/', function(){
echo 'hello world!';
});
此代码段是您项目的核心。
这将接受两个参数。
路线
调用此路由调用的方法
考虑下面的代码片段,如果你有你的项目目录 http://localhost/flight_project/
,当任何人请求这个目录时,将调用定义为 'function_here'
的函数。
Flight::route('/', 'function_here');
如果您定义了如下路线,
Flight::route('/user/', function(){
// do something here
});
当有人访问 http://localhost/flight_project/user/
时,会调用上面的内联函数。
更多信息HERE
您的文件中似乎发生了什么(我对 Flight 不熟悉)
require 'flight/Flight.php';
很可能为所有路由定义 class。
然后 Flight::route();
只是使用 class Flight
中的 route()
方法,没有 class.
的实例
Flight::route('/', function(){
echo 'hello world!';
});
这里发生的事情是当一个路由被匹配时(匹配意味着用户的 URI 匹配你路由上的 URI,在这种情况下 www.yourdomain.com/
将匹配 '/'
路由)然后function()
回调中的代码被执行。
如果再添加一条路线
Flight::route('/about', function(){
echo 'About Us';
});
当用户访问www.yourdomain.com/about
时,他会得到那个路由里面的内容。
路由基本上将 HTTP 请求映射到您的 methods/functions。
简单来说,假设您有路线:
Flight::route('/page1', function() {
echo 'page1!';
});
这基本上是发生了:
- 客户请求
example.com/page1
- 服务器发送查询到PHP
- 您的 PHP 框架解析请求 URL
- 选择正确的路线,在我们的例子中,
page1/
- 最后调用你传入的函数,所以基本上
echo 'page1';
我正在尝试学习 PHP 框架。但是我在理解路由的一些概念时遇到了一些困难。
我选择使用 Flight。他们的主页显示:
require 'flight/Flight.php';
Flight::route('/', function(){
echo 'hello world!';
});
Flight::start();
而且我不明白他们 Flight::route...
的用途。我错过了什么?这个问题甚至与飞行无关。它与一般路由有关。
Flightphp 对如何设置路由有比较全面的解释here。
您应该将路由视为如何处理不同请求模式的定义。 Flight 主页上的示例表示,如果您点击站点根目录(即 /),它将简单地 return "hello world!" 作为响应。
如果您进一步阅读 Flightphp 安装页面,您会注意到所有请求都由 index.php 页面处理。因此,根据您定义的路由,它会回复为该 url 请求模式定义的相关响应。
route() 看起来是一个静态函数,这意味着它不是特定于对象的,即你不能创建一个对象,例如
$flight = new Flight();
然后调用
$flight->route(...)
而是您通过 class 调用它(不是对象,它是 class 的特定实现)。您可以使用 :: 调用 class 的静态函数,在本例中为
Flight::route(...)
路由的内容只是说,当你遇到'/'时,做'X'...而你的情况'X'是
function(){
echo 'hello world!';
}
在后面的阶段你可以匹配
'/' (homepage, i.e. "mywebsite.com/")
'/about-us' (About Us page, i.e. "mywebsite.com/about-us")
'/user/{id}' (User page, i.e. you can pass a parameter such as "mywebsite.com/user/taylor" and then get the user data)
或任何你想要的。而不是仅仅将功能写入路由文件,您可以告诉路由器转到特定功能(通常是控制器功能),您可以在那里做更多的事情。
希望对您有所帮助!
Flight::route('/', function(){
echo 'hello world!';
});
此代码段是您项目的核心。
这将接受两个参数。
路线
调用此路由调用的方法
考虑下面的代码片段,如果你有你的项目目录 http://localhost/flight_project/
,当任何人请求这个目录时,将调用定义为 'function_here'
的函数。
Flight::route('/', 'function_here');
如果您定义了如下路线,
Flight::route('/user/', function(){
// do something here
});
当有人访问 http://localhost/flight_project/user/
时,会调用上面的内联函数。
更多信息HERE
您的文件中似乎发生了什么(我对 Flight 不熟悉)
require 'flight/Flight.php';
很可能为所有路由定义 class。
然后 Flight::route();
只是使用 class Flight
中的 route()
方法,没有 class.
Flight::route('/', function(){
echo 'hello world!';
});
这里发生的事情是当一个路由被匹配时(匹配意味着用户的 URI 匹配你路由上的 URI,在这种情况下 www.yourdomain.com/
将匹配 '/'
路由)然后function()
回调中的代码被执行。
如果再添加一条路线
Flight::route('/about', function(){
echo 'About Us';
});
当用户访问www.yourdomain.com/about
时,他会得到那个路由里面的内容。
路由基本上将 HTTP 请求映射到您的 methods/functions。
简单来说,假设您有路线:
Flight::route('/page1', function() {
echo 'page1!';
});
这基本上是发生了:
- 客户请求
example.com/page1
- 服务器发送查询到PHP
- 您的 PHP 框架解析请求 URL
- 选择正确的路线,在我们的例子中,
page1/
- 最后调用你传入的函数,所以基本上
echo 'page1';