如何在没有任何框架的情况下通过路由渲染模板
How to render template through route without any frameworks
我正在为定制的 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
' 的 space 中呈现模板(例如从子文件夹内)?
我假设你的 get 方法的第二个参数是一个回调函数,如果路由匹配,它将在函数中触发?如果是这样的话,我不明白为什么你 return HTML 因为它没有在任何地方使用。您可能想要 echo() 或 print() 代替。
如果要return代码稍后输出,需要将return值保存到变量中。
无论您选择哪条路径,如果您想让主脚本更具可读性,您可以使用另一个 include() 并将相关代码放入每个路径的单独文件中。
我还建议在顶部使用 require_once 而不是 include_once,因为如果这些 class 文件丢失,继续执行就没有意义了。
我正在为定制的 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
' 的 space 中呈现模板(例如从子文件夹内)?
我假设你的 get 方法的第二个参数是一个回调函数,如果路由匹配,它将在函数中触发?如果是这样的话,我不明白为什么你 return HTML 因为它没有在任何地方使用。您可能想要 echo() 或 print() 代替。 如果要return代码稍后输出,需要将return值保存到变量中。 无论您选择哪条路径,如果您想让主脚本更具可读性,您可以使用另一个 include() 并将相关代码放入每个路径的单独文件中。
我还建议在顶部使用 require_once 而不是 include_once,因为如果这些 class 文件丢失,继续执行就没有意义了。