使用php进行模块化的另一种方法

时间:2012-10-11 15:14:16

标签: php html css web-applications

所以我最近开始学习php,现在我发现我通常会按照这种奇怪的设计模式来构建网页,但我不知道它是否真的像我想的那样聪明,或者它只是垃圾的混乱。

我基本上使用php来加载网站的页眉和页脚,因为每个网页在网站上都有相同的内容。然后我使用php加载每个页面的中心内容的html。

我觉得使用这种方法我可以快速创建新的网页,因为页眉和页脚的“模板”已经创建,并且管理网站更容易,因为代码本质上就像具有可互换的较小代码块一样只是被换掉了。

有没有其他人使用这种方法?是否有类似的模式更有效。

2 个答案:

答案 0 :(得分:0)

这基本上是所有开发人员开始的方式,你是在正确的轨道上,但我可能会建议你很快切换到一个完整的模板系统,MVC框架或已经内置了这些功能的CMS。

您通常可以一次使用全部3个,或者CMS将自己提供其他组件......

祝你学习顺利!

答案 1 :(得分:0)

这是一个很好的编码实践。我也总是以这种方式构建网站,这样我就可以在构建Django后端时添加内容并快速生效。

我认为我会反过来这样做。我的每个网页(例如index.php)对includeheader都有footer

我编写的一个非常有用的东西是一个简短的PHP脚本,用于确定当前目录,以便我始终可以在每个页面上以相同的方式键入链接。

这是代码:

<?php

//This function generates a string of the page URL
function curPageURL() {
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}
//We then store the URL as a string
$url = curPageURL();
//And split the string up everytime there is a backslash
$pieces = explode('/', $url);

//Each backslash corresponds to a directory, so we can now use this to compute
//what we need to prepend to the links.

//Root
if (count($pieces) == 2)
    $root = '';
else if (count($pieces) == 3)
$root = '../';
else if (count($pieces) == 4)
$root = '../../';

//Finally, we include the header file.
include($root . 'header.php');
?>

这样,网页上的所有链接都采用相同的形式。

<a href="<?php echo $root; ?>business/">

这在404页面上也有特殊用途,因为该页面会出现在404所在的目录中!