这是我管理网站内容的方式:
PageLoader.class
class PageLoader {
private $page_dir;
private $page_headers = '';
private $page_html = '';
public function __construct($page_dir)
{
$this->page_dir = $page_dir;
}
public function load()
{
$file_found = false;
ob_start();
$file_found = include("./{$this->page_dir}");
$file_contents = ob_get_contents();
ob_end_clean();
if($file_found != false)
{
$this->page_html = $file_contents;
}
}
public function outputBody()
{
echo $this->page_html;
}
}
的index.php
$connection = mysql_connect(....);
$is_user_logged = login(...);
$view = new PageLoader($_GET['page']);
$view->load();
?>
<html>
<head>
<? $view->outputHeaders(); ?>
</head>
<body>
<? $view->outputBody(); ?>
</body>
</html>
这有一个问题:
无法从load()方法中访问这两个变量$ connection和$ is_user_logged_in。由于各种原因,我的大多数内页依赖于这些变量。由于它们在该范围内都显示为NULL,因此内部页面无法运行。
这可以解决问题:$ view-&gt; setVariable(“connection”,$ connection)但我有超过2个'主'变量,所以我不确定这是不是最好的方法...
我该怎么办?随意建议我管理我的内容的任何其他方式,因为我的方式可能是最不专业的......
答案 0 :(得分:0)
您问题的直接答案是:导入全局变量。 在php中,全局变量必须明确地“导入”。这是通过全局关键字:
完成的$gvar = "asdfad";
function myfunction()
{
global $gvar;
echo $gvar;
}
然而,这似乎不是最好的主意,因为这意味着您的班级不是一个逻辑独立单位。
您可能应该在类中声明属性(包含所需数据)并在某些外部初始化(如构造函数)中设置。