我正在用php写一个项目,它会给我一个网页,链接到以下内容:
- 一个包含我最喜欢的youtube视频的页面,存储在mysql数据库
- 所有我喜欢的游戏页面
- 和音乐等
所有内容都将直接嵌入到网页中,而不是链接到网站。
为了简化这个,我做了一个主模板"index.php",然后使用$_GET
,我通过模板传递页面和其他信息,然后由页面检查脚本处理,该脚本执行一些if来确定加载到网站的php脚本。
我的问题在于将这些脚本加载到网站的首选方法是什么,因为我目前的方法是
if ($_GET["page"] == "videos"){
include ("dynapage/scripts/videos/videos.php");
}
if ($_GET["page"] == "music"){
include ("dynapage/scripts/music/music.php");
}
等是否使用包含将此代码添加到我的模板中是一件好事,或者您可以建议更好的方法?
注: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']);
}
可能是这样的:
$config = array(
'videos' => 'dynapage/scripts/videos/videos.php',
'music' => 'dynapage/scripts/music/music.php'
);
if(isset($config[$_GET['page']])) {
include($config[$_GET['page']]);
}
比写许多if子句(;
看起来你可以这样做:
if( file_exists($fn = "dynapage/scripts/".$_GET['page']."/".$_GET['page'].".php"))
include($fn);