内容管理——全局变量

  • 本文关键字:全局变量 管理 php
  • 更新时间 :
  • 英文 :


我是这样管理我的网站内容的:

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>

有一个问题:

$connection和$is_user_logged_in这两个变量不能在load()方法中访问。由于各种原因,我的大多数内页都依赖于这些变量。由于它们在该作用域中都显示为NULL,因此内页无法正常工作。

这可以解决问题:$view->setVariable("connection", $connection),但我有很多超过2个'主'变量,所以我不确定这是否是最好的方式…

我能做什么?请随意建议任何其他方法来管理我的内容,因为我的方法可能是最不专业的…

对您的问题的直接回答是:导入全局变量。在php中,全局变量必须显式地"导入"。这是通过全局关键字:

完成的。
$gvar = "asdfad";
function myfunction()
{
    global $gvar;
    echo $gvar;
}

然而这似乎不是最好的主意,因为这意味着你的类不是一个逻辑上独立的单元。

您可能应该在类中声明属性(保存所需的数据),并在一些外部初始化(如构造函数)时设置。

最新更新