所以,我试图用PHP构建模板加载器系统。这是我到目前为止所得到的:
的config.php:
<?php
$style_assets_path = "/includes/styles/";
if ($_GET['page_id'] !== '1'){
header('Location: /template.php?pageid=1');
exit(0);
}
if ($_GET['page_id'] <= 100) {
$template = "/main/main.php";
}
function loadTemplate() {
require_once dirname(__FILE__) . "$style_assets_path" . "templates" . "$template";
// This should output: /includes/styles/templates/main/main.php
}
?>
home.php:
<?php
require_once dirname(__FILE__) . "/config.php";
loadTemplate($template);
?>
当我打开home.php时,我收到以下错误:
Warning: require_once(/home/xxxxxxx/public_htmltemplates/) [function.require-once]: failed to open stream: No such file or directory...
我做错了什么?
答案 0 :(得分:1)
函数与全局变量的范围不同,除非您将它们作为参数传递或使用global关键字(仅为完整性而提及),否则您无法访问它们。
如果你的价值观没有改变,虽然把它们宣称为常数,那就更漂亮了:
declare('STYLE_ASSETS_PATH', "/includes/styles/");
if ($_GET['page_id'] !== '1'){
header('Location: /template.php?pageid=1');
exit(0);
}
if ($_GET['page_id'] <= 100) {
$template = "/main/main.php";
}
loadTemplate($template);
function loadTemplate($template) {
require_once dirname(__FILE__) . STYLE_ASSETS_PATH . "templates" . "$template";
}
答案 1 :(得分:0)
这里正确的回答!!!!! 仔细查看您的错误消息! 这是因为, $ style_assets_path 未在功能中确定。 你应该在函数中创建全局变量:
function loadTemplate() {
global $style_assets_path;
global $template;
require_once dirname(__FILE__) . "$style_assets_path" . "templates" . "$template";
// This should output: /includes/styles/templates/main/main.php
}