我正在为定制的CMS创建一个基本的路由系统,我希望在没有框架的原始PHP中完全做到这一点。到目前为止,我已经完成了路由工作,并且GET和POST方法正常工作。
这是我的index.php文件
<?php
include_once 'Request.php';
include_once 'Router.php';
$router = new Router(new Request);
$router->get('/', function() {
return <<<HTML
<h1>Hello world</h1>
HTML;
});
$router->get('/profile', function($request) {
return <<<HTML
<h1>Profile</h1>
HTML;
});
$router->get('/data', function($request) {
return json_encode($request->getBody());
});
如您所见,对于路由“ /”和“ / profile”,我正在使用heredoc返回一些HTML代码。没关系,但最终会很快很快填满此文件。
是否可以在'return html code
'的空间中渲染模板(例如,从子文件夹内部)?
答案 0 :(得分:1)
我假设您的get方法的第二个参数是一个回调函数,如果路由匹配,该回调函数将在该函数中触发?如果是这种情况,我看不到为什么您返回HTML,因为在任何地方都没有使用它。您可能想要echo()或print()代替。 如果要返回代码并在以后输出,则需要将返回值保存到变量中。 无论您选择哪个路径,都可以使用另一个include(),如果希望使主脚本更具可读性,则只需将相关代码放入每个路径的单独文件中即可。
我还建议在顶部使用require_once而不是include_once,因为如果缺少这些类文件,则没有必要继续执行。