PHP|如何全局访问/修改switch语句变量



也许这个问题措辞错误,但我在下面的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';

}

?>

最新更新