modulework/routework

PHP 基础 RESTful 路由器

安装: 6

依赖: 0

建议者: 0

安全: 0

星星: 1

关注者: 2

分支: 0

开放问题: 0

类型:modulework-module

dev-master 2013-06-15 14:51 UTC

This package is not auto-updated.

Last update: 2024-09-28 14:01:45 UTC


README

这是一个非常容易使用的路由类。你可能从大型框架中听说过它。但这次它是独立的!

安装

  • router.php 文件放入你的应用程序文件夹
  • .htaccess 文件放入你的根站点文件夹,根据需要调整 RewriteBase
  • 包含它 include 'router.php';
  • 初始化它
    Route::tar() <- 我知道这不是我最好的笑话 :D

如何使用 & 示例

现在你可以开始定义一些路由,如下所示

Route::get('/', function() {
      echo "Home";
});

每次访问你的 URL 都会显示 Home。请确保你始终定义此路由。

但其他路由怎么办?假设我们想要设置一个基本网站。我们需要一个 contactaboutprojects 页面。

Route::get('contact', function() {
      ?>
      <html>
      <head>
          <title>Contact us!</title>
      </head>
      <body>
           <h1>Contact Us!</h1>
          <form action="contact" method="POST">
              <input type="text" name="name" />
              <input type="submit" value="Send us your name!" />
          </form action="contact" method="POST">
      </body>
      </html>
      <?php
});

请注意,我们退出 PHP 以写入一些 HTML 标记,并且我们 绝不 在我们的路由中添加任何尾部或前导斜杠!

Route::get('about/(:any)', function($name) {
      ?>
      <html>
      <head>
          <title>About us!</title>
      </head>
      <body>
           <h1>About Us!</h1>
           <p>Staff: <?php echo $name; ?></p>
      </body>
      </html>
      <?php
});

在关于页面上,用户可以通过在 URL 中附加一个名称如 /bob 来查看不同雇员的资料。我们在路由中定义了一个通配符 (:any),它允许任何字符并通过我们传递到闭包中的 $names 变量使其可用。有两种类型的通配符可用

  • (:any) 任意字符组合
  • (:num) 仅数字

现在使用这些知识

Route::get('project/(:num)', function($id) {
     switch($id):
       case: '1'
            $project = 'MODULEWork';
       default:
            $project = 'Not Found';
      ?>
      <html>
      <head>
          <title>PROJECT | <?php echo $project; ?></title>
      </head>
      <body>
           <h1><?php echo $project; ?></h1>
           <p>Interesting information...</p>
      </body>
      </html>
      <?php
});

你可以看到你只能传递一个整数到这个路由,并且项目名称基于这个 ID 生成。

你可能已经看到了我们在联系页面创建了一个表单。如果我们现在提交它,我们会看到一个空白页面。为什么?contact 路由被定义了。然而,它被定义为 get 路由。此路由只会对 HTTP GET 请求做出响应,不会对 POST 做出响应。为了获取表单的信息,我们需要定义一个对 POST 请求做出响应的路由。

ROUTEWork 是 RESTful 的

你可以为 4 种 HTTP 请求方法定义路由

  • GET 使用此方法:get()
  • POST 使用此方法:post()
  • PUT 使用此方法:put()
  • DELETE 使用此方法:delete()

所有方法都有相同的语法!

未找到 - NOT - FOUND

你可能想知道如何让你的用户知道他访问了一个不存在的页面。

ROUTEWork 使其变得像馅饼一样简单。只需将此添加到你 所有 路由定义的底部即可!

Route::_404(function($uri) {
   echo "<h1>404 - NOT FOUND</h1>";
   echo "<p>Your requested page: ", $uri, "could not be found...</p>";
});

请确保将其放在非常底部,因为它将响应用户输入的每个 uri。

路由从上到下调用。这意味着如果你定义了两次相同的规则,则第一个规则会触发!