使用php实现模块化的另一种方法
所以我最近开始学习php,现在我发现我通常遵循这种奇怪的设计模式来构建网页,但我不知道它是否真的像我想象的那样聪明,或者它只是一堆垃圾 我基本上使用php加载网站的页眉和页脚,因为通常每个网页在网站上都有相同的页面。然后,我使用php加载每个页面中心内容的html 我觉得使用这种方法我可以快速创建新的网页,因为页眉和页脚的“模板”已经创建好了,而且管理网站更容易,因为代码本质上类似于交换掉的较小代码块使用php实现模块化的另一种方法,php,html,css,web-applications,Php,Html,Css,Web Applications,所以我最近开始学习php,现在我发现我通常遵循这种奇怪的设计模式来构建网页,但我不知道它是否真的像我想象的那样聪明,或者它只是一堆垃圾 我基本上使用php加载网站的页眉和页脚,因为通常每个网页在网站上都有相同的页面。然后,我使用php加载每个页面中心内容的html 我觉得使用这种方法我可以快速创建新的网页,因为页眉和页脚的“模板”已经创建好了,而且管理网站更容易,因为代码本质上类似于交换掉的较小代码块 还有其他人使用这种方法吗?是否存在更有效的类似模式 这是所有开发人员开始工作的基本方式,您的做
还有其他人使用这种方法吗?是否存在更有效的类似模式 这是所有开发人员开始工作的基本方式,您的做法是正确的,但我可能建议您尽快转向成熟的模板系统、MVC框架或已内置这些功能的CMS 您通常甚至可以一次使用所有3个组件,或者CMS将自己提供其他组件
祝你学习顺利 这是一个很好的编码实践。我也总是以这种方式构建网站,这样我就可以在构建
Django
后端的同时快速添加内容并使其上线
不过,我认为我的做法正好相反。我的每个页面(比如,index.php
)的页眉和页脚都有一个include
我写的一个超级有用的东西是一个确定当前目录的短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/">
是的,很多人都编写了模板引擎/框架,这些引擎/框架基于您发现的模块化。有些简单,有些复杂得可怕。有很多值得谷歌搜索的东西。探索!