使用 php 创建动态页面
Create dynamic page with php
我正在为一个项目编写一个小型路由系统。它并不完美,它是一个自定义解决方案,可以根据用户的要求将 url 映射到他们的模板。我想根据用户插入数据库中的每个事件的唯一 ID 生成一个动态页面。因此,如果用户请求事件 1234,它将在 url https://mysitedomain.com/event/1234
处获得一个包含事件详细信息的页面。我需要了解如何使用我的代码实现此目的,我使用前端控制器和红豆作为 ORM 来访问数据库。
这是我的路由器的代码。任何建议将不胜感激。目前我只能提供模板。
<?php
namespace Router;
define('TEMPLATE_PATH', dirname(__DIR__, 2).'/assets/templates/');
class Route {
private static $assets = ['bootstrap' => 'assets/css/bootstrap.min.css',
'jquery' => 'assets/js/jquery.min.js',
'bootstrapjs' => 'assets/js/bootstrap.min.js',
];
public static function init()
{
if( isset($_SERVER['REQUEST_URI']) ){
$requested_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH);
if( $requested_uri === '/' ){
echo self::serveTemplate('index', self::$assets);
}
elseif( $requested_uri != '/' ){
$requested_uri = explode('/', $_SERVER['REQUEST_URI']);
if( $requested_uri[1] === 'event' ){
echo self::serveTemplate('event', self::$assets, ['event_id' => 001] );
}
else{
echo self::serveTemplate($view, self::$assets);
}
}
}
}
private static function serveTemplate(string $template, array $data, array $event_id = null)
{
if( !is_null($event_id) ){
$data[] = $event_id;
ob_start();
extract($data);
require_once TEMPLATE_PATH."$template.php";
return ob_get_clean();
}
else{
ob_start();
extract($data);
require_once TEMPLATE_PATH."$template.php";
return ob_get_clean();
}
}
}
?>
从头开始编写路由器有点复杂,您必须多次使用 regular expression 来适应请求的各种场景 url 并且您的路由器应该处理 HTTP 方法,例如 POST、获取、删除、放置和修补。
您可能想要使用现有的库,例如 Fast Route,易于使用,它的简单性可以让您了解它是如何创建的。
我正在为一个项目编写一个小型路由系统。它并不完美,它是一个自定义解决方案,可以根据用户的要求将 url 映射到他们的模板。我想根据用户插入数据库中的每个事件的唯一 ID 生成一个动态页面。因此,如果用户请求事件 1234,它将在 url https://mysitedomain.com/event/1234
处获得一个包含事件详细信息的页面。我需要了解如何使用我的代码实现此目的,我使用前端控制器和红豆作为 ORM 来访问数据库。
这是我的路由器的代码。任何建议将不胜感激。目前我只能提供模板。
<?php
namespace Router;
define('TEMPLATE_PATH', dirname(__DIR__, 2).'/assets/templates/');
class Route {
private static $assets = ['bootstrap' => 'assets/css/bootstrap.min.css',
'jquery' => 'assets/js/jquery.min.js',
'bootstrapjs' => 'assets/js/bootstrap.min.js',
];
public static function init()
{
if( isset($_SERVER['REQUEST_URI']) ){
$requested_uri = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH);
if( $requested_uri === '/' ){
echo self::serveTemplate('index', self::$assets);
}
elseif( $requested_uri != '/' ){
$requested_uri = explode('/', $_SERVER['REQUEST_URI']);
if( $requested_uri[1] === 'event' ){
echo self::serveTemplate('event', self::$assets, ['event_id' => 001] );
}
else{
echo self::serveTemplate($view, self::$assets);
}
}
}
}
private static function serveTemplate(string $template, array $data, array $event_id = null)
{
if( !is_null($event_id) ){
$data[] = $event_id;
ob_start();
extract($data);
require_once TEMPLATE_PATH."$template.php";
return ob_get_clean();
}
else{
ob_start();
extract($data);
require_once TEMPLATE_PATH."$template.php";
return ob_get_clean();
}
}
}
?>
从头开始编写路由器有点复杂,您必须多次使用 regular expression 来适应请求的各种场景 url 并且您的路由器应该处理 HTTP 方法,例如 POST、获取、删除、放置和修补。
您可能想要使用现有的库,例如 Fast Route,易于使用,它的简单性可以让您了解它是如何创建的。