如何在AddRoute语法中实现foreach循环



我正在从快速路由中间件创建路由器。

// routes.php
return [
    ['GET', '/1', ['ShowMe','demo']],
    ['GET', '/2', ShowMe::class],
];

如果我手动将此包含在SimpleDisPatcher的功能中,一切正常 - 两个路由都在工作

   // $r->addRoute('GET', '/ddd', ['ShowMe','demo']);
   // $r->addRoute('GET', '/ddd', ShowMe::class);

但是,如果我想加载从routes.php加载路由,我正在使用这样的代码:

foreach ($routes as $key => $route) {
   $r->addRoute($route[0], $route[1], [$route[2][0], $route[2][1]]);
  }

这项工作非常适合称为功能的路线: ['get','/1',['showme','demo']],

所以我修改(因为我有2种路由类型,并且希望这两个语法支持这两个(:

   $r->addRoute($route[0], $route[1], [implode(",", $route[2])]);

现在在这两种路线类型中都无法使用:

Warning: implode(): Invalid arguments passed in ...index.php on line 69
Fatal error: Uncaught RuntimeException: Invalid request handler: array

您的foreach循环语法有错误语法为 foreach($arrayName as $key => $value)

foreach ($routes as $key => $route) {
   $r->addRoute($routes[$key]); # or  simply  $r->addRoute($route);
  }

其次,implode()函数将数组返回作为一个我不想要的字符串。因此,简单地说:

$r->addRoute($route[0], $route[1], $route[2]);

最新更新