中回显的PHP变量中。
我的例子如下。我有以下脚本:
<?php
// ... other code ...
switch($_GET['request']) {
case "firstPage":
$file = APP_ROOT. "pages/firstPage.php";
$hndle = fopen($file,"r");
$right_column = fread($hndle, filesize($file));
fclose($hndle);
break;
case "secondPage":
$file = APP_ROOT. "pages/secondPage.php";
$hndle = fopen($file,"r");
$right_column = fread($hndle, filesize($file));
fclose($hndle);
break;
}
}
?>
<div id="right_column">
<?php echo $right_column;?>
</div>
// ... other code ...
根据$_GET['request']的值,我分配给变量$right_column php文件的内容。然后,在最后一个div中回显该变量。firstPage.php和secondPage.php文件包含html和php混合代码。我寻找像Zend中的"部分"那样的解决方案。由于
首先,你的代码很糟糕,它应该是这样的:
$pages = array(
'firstPage' => 'pages/firstPage.php',
'secondPage' => 'pages/secondPage.php'
);
$request = 'firstPage';
if ( array_key_exits($_GET, 'request')
&& array_key_exists($pages, $_GET['request']) )
{
$request = $_GET['request'];
}
?>
<div id="right_column">
<?php include APP_ROOT . $pages[ $request ]; ?>
</div>
请阅读http://codeangel.org/articles/simple-php-template-engine.html,你可能会发现这很有趣。它应该向您解释如何轻松地利用php的本地模板功能。
实际上,读取和转储文件并不是一个解决方案。你只是在向你的终端用户显示代码。
您需要的是解析PHP文件并显示结果。有两种方法:
首先,代替
$file = APP_ROOT. "pages/firstPage.php";
$hndle = fopen($file,"r");
$right_column = fread($hndle, filesize($file));
fclose($hndle);
你可以这样做:
$right_column = include(APP_ROOT . "pages/firstPage.php");
所以,你的firstPage.php必须返回代码。像这样:
// firstPage.php
return "my html";
但是你也可以像这样包含它:
<div id="right_column">
<?php include(APP_ROOT . "pages/firstPage.php"); ?>
</div>
或者,可以使用ob_get_contents。PHP有一个很好的关于如何使用它的文档。
我用include
如果设置一个变量来指示要包含哪个PHP文件,那么可能会更简单,然后不读取文件,而只是包含它。例如:
<?php
// ... other code ...
switch($_GET['request']) {
case "firstPage":
$file = APP_ROOT. "pages/firstPage.php";
break;
case "secondPage":
$file = APP_ROOT. "pages/secondPage.php";
break;
}
}
?>
<div id="right_column">
<?php include($file);?>
</div>
// ... other code ...
如果你的firstPage.php和secondPage.php文件只有HTML,你所做的是可以工作的。如果它有PHP,那么你需要include()
它;或者你可以用eval()
,但这又比你需要做更多的工作
在我看来,你可以按惯例编程,而不是有一个不断增加的开关语句:
<?php
// ... other code ...
$file = '';
if (isset($_GET['request'])) {
$safeFileName = sanitizeRequestForFileName($_GET['request']);
$file = APP_ROOT. 'pages/' . $safeFileName . '.php';
}
?>
<div id="right_column">
<?php
if (file_exists($file)) {
include($file);
}
?>
</div>
// ... other code ...