PHP模式将UI标记与静态内容分离

时间:2013-04-20 17:37:38

标签: php user-interface decoupling

我处理的网站由很多静态内容组成。困扰我的网站之一是重复/一次性标记的数量,每次我必须更改或更新UI时,我必须修改许多不同的文件,然后确保我没有打破任何事情我正在考虑将网站内容移动到PHP服务器并重新组织网站内容以使我的工作更轻松。

/ * 这对我来说也是一种锻炼。我想用PHP弄湿我的脚。 因此,我选择不采用现成的框架。 * /

以下模式是否适用于静态网站?也就是说,假设我想要一个简单的框架来管理我的网站,并且我想将我的网站UI与我的内容分离,这是否是一种合理的方式来完成它?我忽略了什么吗?

假设我想为网站上的每个页面声明我的内容,如下所示:

/* begin contentStub.php */
<?php $headerUtil->setTitle("Hola Mundo!"); ?>
<p>Hello world</p>
/* end contentStub.php */

还假设我想为我的网站使用一个简单的模板,如下所示:

/* begin UITemplate.php */
<!DOCTYPE html>
<html>
    <head>
        <title><?php echo($headerUtil->getTitle()); ?></title>
    </head>
    <body>
        <?php echo($content); ?> 
    </body>
</html>
/* end UITemplate.php */

现在假设我将auto_prepend_file的PHP指令设置为使用以下文件:

/* begin file: prepend.php */
<?php
    class HeaderUtil
    {
        private $title;
        public function __construct()
        {
            $this->title = "new page";
        }
        public function getTitle(){return $this->title;}
        public function setTitle($title){$this->title = $title;}

        //TODO: Add methods/collections to deal with css/js/keywords
    }

    $headerUtil = new HeaderUtil();

    ob_start();
        include($_SERVER['SCRIPT_FILENAME']);
    $content = ob_get_contents();
    ob_end_clean();

    include("UITemplate.php");

    die();
?>
/*  end file: prepend.php */

此示例似乎按照我的预期运行。这是使用PHP将我的网站UI与我的内容分离的合理方法吗?更具体地说,假设我的要求不变,我是否会使用我的方法面临任何明显和/或重大的安全性,稳定性或资源耗尽风险?

提问的动机:我对Coldfusion有一些经验,之前曾使用过Java ServerFaces 2.对于这些技术,线程/范围很重要,而且在任何语言中,文件访问时间都至关重要。我在这里错过了什么吗?

0 个答案:

没有答案