php - 有没有更简洁的方法来编写这个避免包含

标签 php mysql html dynamic

我正在用 php 编写一个项目,它基本上会给我一个网页,其中包含指向以下内容的链接:

  • 包含存储在 mysql 数据库中的我最喜欢的 youtube 视频的页面
  • 包含我最喜欢的所有游戏的页面
  • 和音乐等

所有内容都将直接嵌入到网页中,而不是链接到网站。

为了简化这个,我制作了一个主模板“index.php”,然后使用 $_GET 我将页面和其他信息传递给模板,然后由页面检查脚本处理执行多个 ifs 以确定将哪个 php 脚本加载到网站中。

我的问题在于将这些脚本加载到网站的首选方法是什么,因为我目前的方法是

if ($_GET["page"] == "videos"){
    include ("dynapage/scripts/videos/videos.php");
}

if ($_GET["page"] == "music"){
    include ("dynapage/scripts/music/music.php");
}

使用 include 将这段代码添加到我的模板中是一件好事还是有更好的方法可以建议?

注意:isset 的检查已包含在检查中,可应要求提供额外的 pbs。

最佳答案

使用一个以 $_GET["page"] 值为键,以 php 文件名为值的数组。然后您只需要检查它是否在数组内,如果是,则包含它。然后将值写入数组,而不是编写许多 if 子句。

下面的代码示例展示了这一点,此外它还有一个加载页面的功能,因为包含的脚本不会在意外包含的上下文中设置变量。

$pages = array(
    'videos' => 'videos/videos.php',
    'music' => 'music/music.php',
);

/**
 * include a page template
 */
function load_page(array $pages, $page, $path = 'dynapage/scripts')
{
    if (isset($pages[$page])) return;
    include ($path.'/'.$pages[$page]);
}

if (isset($_GET['page']))
{
    load_page($pages, $_GET['page']);
}

关于php - 有没有更简洁的方法来编写这个避免包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8674135/

相关文章:

javascript - 为什么 jquery 选择器不适用于新替换的标签?

php - 线系列图在调整大小时出现错误 - highcharts

PHP表单提交和解析

c# - 从数据库获取不带空值的字符串值 C#

mysql - 显示出现次数最多的组

mysql - 重新使用sql server中现有的选定列?

javascript - 将 jquery 代码从定位值更改为链接

javascript - Jquery - 在点击 div 时在滚动上添加类 - IE 和 Firefox 问题

php - Python 脚本化 mp3 数据库,带有 php 前端

php - 通过 PHP 和 SQL 输出 XML