有没有更简洁的方法来写这个避免包括

ree*_*s92 1 html php mysql 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");
}
Run Code Online (Sandbox Code Playgroud)

ECT

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

注意:支票isset已经包括在支票中,并且可以根据要求提供adbsal pbs.

hak*_*kre 6

使用一个数组$_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']);
}
Run Code Online (Sandbox Code Playgroud)