关于Slim Framework 的文档,它说
在这个示例应用程序中,所有路由都在index.php中,但实际上这可能会产生一个相当长且难以处理的文件!可以重构您的应用程序以将路由放入不同的文件或文件中,或者只注册一组具有实际在其他地方声明的回调的路由.
它没有说明如何实际做到这一点.我唯一的想法是,你可以拆分代码到多个PHP文件,然后使用include或require在index.php引用这些.
我也不确定它是什么意思"注册一组带有实际在其他地方声明的回调的路由"
有没有人对此有任何想法,因为我想要构建的应用程序可能有相当多的路由?
作为一个微框架,Slim不强制执行任何特定的方法.您可以找到一个随时可用的结构(我想到的是Slim Skeleton Application)或者编写自己的结构; 与其他框架不同,Slim并不试图保护您免受PHP的侵害.
路径定义可以像字符串数组一样简单:
<?php // routes.php
return [
'/' => ['Foo\\Home', 'index'],
'/about' => ['Foo\\Home', 'about'],
'/contact' => ['Foo\\Contact', 'form' ],
];
Run Code Online (Sandbox Code Playgroud)
...然后在您的index.php入口点加载和处理:
$routes = require('/path/to/routes.php');
foreach ($routes as list($path, $handler)) {
$app->get($route, $handler);
}
Run Code Online (Sandbox Code Playgroud)
您可以通过将适当的目录添加到composer.json以下内容来利用现有的Composer设置来自动加载您的类:
{
"require": {
"slim/slim": "^3.3",
"monolog/monolog": "^1.19"
},
"autoload": {
"psr-4": {"Foo\\": "./Foo/"}
}
}
Run Code Online (Sandbox Code Playgroud)
从这里开始,它可以根据需要变得复杂:在YAML文件中定义路由,从定义的类中自动加载等.
(代码示例仅供参考,甚至可能无效.)
Slim 文档中有一些关于它的想法
require您可以使用Composer 自动加载代替's
“注册一组带有回调的路由,这些路由实际上是在别处声明的”
从文档:
上面描述的每个路由方法都接受一个回调例程作为其最终参数。这个参数可以是任何 PHP 可调用的......
所以你可以这样做:
$routeHandler = function ($request, $response) { echo 'My very cool handler'; };
$app->get('/my-very-cool-path', $routeHandler);
Run Code Online (Sandbox Code Playgroud)
但通常人们使用类而不是函数:http : //www.slimframework.com/docs/objects/router.html#container-resolution
我想你几乎理解了基本的想法。我建议多次阅读有关路由的章节。它涵盖了一切都很好。
快乐编码,如果您需要任何其他帮助,请告诉我!