0

我目前正在开发一个简单的 PHP 模板引擎,我必须做出决定,但我不确定如何解决这个问题。

我编写了一个名为“Page”的类,它加载当前页面的页面组件。这是它现在的样子:

<?php
class Page {
    private $currentPage;

    private $header;
    private $content;
    private $footer;

    const CONTENT_DIR = 'content/';
    const CONTENT_FILE_EXT = '.php';

    public function __construct(Header $header, Content $content, Footer $footer) {
        $this -> header = header;
        $this -> content = content;
        $this -> footer = footer;
    }

    public function getCurrentPage() {
        if(!isset($this -> currentPage)) {
        if(isset($_GET["p"])) {
            try {
                $this -> setCurrentPage(trim($_GET["p"]));
                } catch(FileNotFoundException $e) {
                }
        }
        else
            $this -> setCurrentPage('start');

        }
        return $this -> currentPage;            
    }

    private function setCurrentPage($pageName) {
        if(file_exists(self::CONTENT_DIR.$pageName.self::CONTENT_FILE_EXT)) {
            $this -> currentPage = $pageName;
        }
        else
            throw new FileNotFoundException();
    }
}
?>

现在,我有第二类“PageFactory”:

<?php
class PageFactory {
    public function build() {
        $header = new Header();
        $content = new Content();
        $footer = new Footer();

        return new Page($header, $content, $footer);
    }
}
?>

传递当前页面(要加载的页面)只是感觉不对。我应该更好地使用静态函数来返回当前页面吗?问题是我在其他类中也需要这个功能(例如菜单)。我必须通过参数再次传递当前页面。

感谢您的任何建议!

4

0 回答 0