我不了解路由

时间:2015-06-10 10:51:17

标签: php routing flightphp

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

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

require 'flight/Flight.php';

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

Flight::start();

我不明白他们使用Flight::route...的原因。我错过了什么?这个问题甚至与飞行无关。它与一般的路由有关。

5 个答案:

答案 0 :(得分:4)

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

简单地说,就说你有路线:

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

这基本上是发生了:

  1. 客户请求example.com/page1
  2. 服务器向PHP发送查询
  3. 您的PHP框架解析请求网址
  4. 选择正确的路线,在我们的情况下,page1/
  5. 最后调用你传入的函数,基本上是echo 'page1';

答案 1 :(得分:2)

Flightphp对如何设置路线here有一个相当全面的解释。

您应该将路由视为如何处理不同请求模式的定义。 Flight的主页上的例子说,如果你点击你的网站根(即/)它只会返回" hello world!"作为回应。

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

答案 2 :(得分: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时,他会在该路线内找到什么。

答案 3 :(得分: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)

或任何你想要的。而不是仅仅将函数写入路由文件,您可以告诉路由器转到特定的函数(通常是一个Controller函数),你可以在那里做更多的东西。

我希望这有帮助!

答案 4 :(得分:1)

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

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

这将接受两个参数。

  1. 路线

  2. 调用此路线呼叫的方法

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

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

    如果您已定义如下路线,

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

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

    更多信息HERE