2010-04-15 66 views
0

我的PHP体验相当有限。我只是继承了一些看起来很奇怪的东西,我想知道这是否是一种标准的做事方式。这在浏览器位置(例如www.example.com/example_page)显示的页面中有这样的:创建PHP语言网页

<? 
$title = "Page Title"; 
$meta = "Some metadata"; 
require("pageheader.inc"); 
?> 
<!-- Content --> 

然后pageheader.inc有这样的东西:

<? 
@$title = ($title) ? $title : ""; 
@$meta = ($meta) ? $meta : ""; 
?> 
<html> 
<head> 
<title><?=$title?></title 
</head> 
<!-- and so forth --> 

也许别人觉得这种风格有用,但它让我困惑。我想这可能是朝着一个基本的内容管理系统迈出的一步,但它在这里的工作方式我认为它会增加服务器处理所需的处理量,而不会减少Web开发人员的负担,使其值得付出努力。

那么,这是用PHP创建页面的正常方式吗?或者我应该把所有这些都放在一个更好的方法上?

此外,我知道“<?”(与“<?php”)是不合需要的;我只是重复了代码中的内容。

+0

@Skilldrick:谢谢你的修复! – GreenMatt 2010-04-15 20:08:13

回答

3

那么,这当然不是无效的方式来做到这一点 - 但它可能有点繁琐的阅读和维护。我不会说有一种“正常”的方式在PHP中做这样的事情。在一天结束时,您将变量输出到HTML中 - 因此如果没有使用专用模板引擎(和/或朝着更多基于MVC的方法前进,如ryeguy所述),则没有多种选择。

我的建议:如果它不适合您的首选风格,请更改它。最重要的是,如果你要开发和维护它,你可以舒适地,高效地使用它。

3

这是种类在正确的轨道上向MVC。 MVC完全是关于问题的分离。这里的想法是,第一个片段设置值,然后pageheader.inc输出它们。这使逻辑脱离视图。

它做得很潦草。

1

基本上有两种方法可以使用,它们是相互颠倒的。你有一个方法的例子,每个页面都有自己的内容负责包含页眉,页脚和其他常用数据。这种方法没有什么特别的错误。第二种方法是有一个页面负责包含页眉,页脚,内容。这是使用流行的PHP框架的更常见的应用程序。

2

PHP是一个非常分散的社区,没有“标准”的做事方式。也就是说,看起来你发布的pageheader.inc例子可以简化。顶端的代码对你没有好处。仅此一点就足够了:

<html> 
<head> 
<title><[email protected]$title?></title> 
</head> 

如果你正在寻找的架构和最佳做法的一些指导,我会强烈建议检查出像笨Kohana的或流行的PHP框架。

+1

为了清楚起见,'@'符号可以消除错误。 (在这种情况下,通知变量未设置。) – 2010-04-16 07:43:16

0

我在很多简单的网站上使用过这种风格,比如5-10页的小册子软件站点,我想要一些集中的代码,例如从几个变量创建菜单和页面标题,但不想全面吹MVC结构,因为它是矫枉过正。