2

我正在尝试学习 PHP 框架。但是我在理解路由的一些概念时遇到了一些困难。

我选择使用Flight。他们的主页显示:

require 'flight/Flight.php';

Flight::route('/', function(){
    echo 'hello world!';
});

Flight::start();

而且我不明白他们在做什么Flight::route...。我错过了什么?这个问题甚至与飞行无关。它通常与路由有关。

4

5 回答 5

4

路由基本上将 HTTP 请求映射到您的方法/函数。

简单地说,假设你有路线:

Flight::route('/page1', function() {
    echo 'page1!';
});

这基本上是发生的:

  1. 客户要求example.com/page1
  2. 服务器向 PHP 发送查询
  3. 您的 PHP 框架解析请求 URL
  4. 选择正确的路线,在我们的例子中,page1/
  5. 最后调用你传入的函数,所以基本上echo 'page1';
于 2015-06-10T11:07:53.213 回答
2

Flightphp 在此处对如何设置路线有相当全面的解释。

您应该将路由视为如何处理不同请求模式的定义。Flight 主页上的示例表明,如果您点击站点根目录(即 /),它将简单地返回“hello world!”。作为回应。

如果您进一步阅读 Flightphp 安装页面,您会注意到所有请求都由 index.php 页面处理。因此,根据您定义的路由,它会回复为该 url 请求模式定义的相关响应。

于 2015-06-10T11:05:52.360 回答
2

您的文件中似乎发生了什么(我不熟悉 Flight)

require 'flight/Flight.php';很可能为所有路由定义一个类。

然后Flight::route();就是简单地使用类中的route()方法,Flight而没有类的实例。

Flight::route('/', function(){
    echo 'hello world!';
});

这里发生的是当路由匹配时(通过匹配意味着用户的 URI 与您的路由上的 URI 匹配,在这种情况下www.yourdomain.com/将匹配'/'路由),然后function()回调内部的代码被执行。

如果您添加另一条路线

Flight::route('/about', function(){
    echo 'About Us';
});

当用户访问时,www.yourdomain.com/about他将获得该路线内的内容。

于 2015-06-10T11:07:04.857 回答
1

route() 似乎是一个静态函数,这意味着它不是特定于对象的,即您不能创建诸如

$flight = new Flight();

然后打电话

$flight->route(...)

而是通过类(不是对象,它是类的特定实现)调用它。您可以使用 :: 调用类的静态函数,在这种情况下

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)

或任何你想要的。而不仅仅是将函数写入路由文件,你可以告诉路由器去一个特定的函数(通常是一个控制器函数),你可以在那里做更多的事情。

我希望这有帮助!

于 2015-06-10T11:06:03.397 回答
1
Flight::route('/', function(){
    echo 'hello world!';
});

此代码段是您项目的核心。

这将接受两个参数。

  1. 路线

  2. 调用此路由调用的方法

考虑下面的代码片段,如果你有你的项目目录http://localhost/flight_project/,当有人请求这个目录时,定义为的函数'function_here'将被调用。

Flight::route('/', 'function_here');

如果您已定义如下路线,

Flight::route('/user/', function(){
    // do something here
});

当有人访问时http://localhost/flight_project/user/,上面的内联函数被调用。

更多信息在这里

于 2015-06-10T11:06:39.070 回答