也许这个问题措辞错误,但我在下面的PHP switch语句中遇到了一些问题。我的目标是在所有文件中访问$page变量。我试着通过会话来做到这一点,但无法实现。我的代码示例如下所示。是否可以使用$_GLOBALS或$SESESSIONS解决此问题?请给我指正确的方向。
Index.php
<?php
/* Fetch needed files. */
require_once 'app/paths.php';
require_once THEME_LAYOUT_PATH . 'container.phtml';
if(!isset($_GET['page']) || $_GET['page'] == ''){
$page = 'home';
} else {
$page = $_GET['page'];
}
$layoutPath = 'themes/neutron/layout/' . $page . '/' . $page . '.phtml';
switch($page)
{
case 'home':
include $layoutPath;
break;
case 'login':
include $layoutPath;
break;
case 'register':
include $layoutPath;
break;
default:
include 'themes/neutron/layout/404/404.phtml';
}
?>
Container.phtml
<html>
<?php if($page == 'login'){ ?> //Error: $page is undefined
<link rel = "stylesheet" type = "text/css" href = "<?php ASSETS_PATH . 'css/file.css' ?>">
<?php } ?>
</html>
在设置$page变量之前,您需要container.phtml。switch语句中包含的文件都应该可以访问全局$page变量,假设它们没有封装在类、函数或其他构造中。
编辑:以下是更改后的代码:
<?php
if(!isset($_GET['page']) || $_GET['page'] == ''){
$page = 'home';
} else {
$page = $_GET['page'];
}
/* Fetch needed files. */
require_once 'app/paths.php';
require_once THEME_LAYOUT_PATH . 'container.phtml';
$layoutPath = 'themes/neutron/layout/' . $page . '/' . $page . '.phtml';
switch($page)
{
case 'home':
include $layoutPath;
break;
case 'login':
include $layoutPath;
break;
case 'register':
include $layoutPath;
break;
default:
include 'themes/neutron/layout/404/404.phtml';
}
?>