网站结构

时间:2009-01-27 21:42:12

标签: php structure

我对php很新,我正在尝试决定组织页面的最佳方式,并使用PHP提供它们。我所拥有的两个(基本)想法是:

  • 所有使用PHP的单个页面都包含页眉,页脚和菜单。

  • 包含菜单,页眉和页脚的单个主页,以及主要内容的包含。页面名称来自URL中的变量。

有没有人有任何其他建议或想法?这是非常基本的东西,但我想看看是否有人有更好的想法。

由于

9 个答案:

答案 0 :(得分:6)

我之前已经走过了两个方向,虽然它们都有优点和缺点,但我倾向于你的第二个选项,即包含布局的单个主页面。这类似于母版页在桌面发布应用程序中的工作方式,而ASP.NET有一个很好的实现这个想法 - 而不是我说你应该切换技术。

但是,如果你选择这条路线,请使用mod_rewrite来获取PHP主页面的路径,而不是URL中的查询字符串。您的.htaccess文件应包含以下内容:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ /index.php?path=$1 [QSA]

这基本上表明,如果他们要求的文件不存在,而不是使用querystring变量中的URL路径将处理转发到index.php的404错误。所以“http://example.com/path/to/page”最终命中index.php,并将$ _GET ['path']设置为“/ path / to / page”。从那里,您可以从数据库,平面文件或您拥有的内容中提取内容。您还可以根据请求的路径选择不同的模板。

答案 1 :(得分:2)

我喜欢包含标题和各种内容的各个页面。

我必须维护一个网站,其中原始开发人员在URL中使用带有变量的单个页面,这很痛苦。除了添加新的类似页面之外,它很难进行任何更改。虽然他也使用框架,所以这也可能是问题的一部分。

答案 2 :(得分:2)

考虑到这两个选择,我会选择2号。如果你的网站增长到你需要一个合适的框架的水平,移动单个页面而没有所有的包含('header.php');东西会容易得多。对于奖励积分,使用模型和视图文件夹分别放置数据库访问和显示逻辑,然后你到了true MVC environment的一半。

编辑添加 - 带条件包含的单个索引还为您的应用提供单一的入口点,这对于安全性非常有价值。

答案 3 :(得分:2)

为什么只走正确方向的一半?使用现有的MVC框架之一。它们是强大的工具,可以比任何自定义解决方案更好地构建代码。转到MVC,学习如何将业务逻辑与表示逻辑和数据结构分开,作为潜在员工提高您在就业市场的价值,节省您的时间并且快乐。

你可能应该开始(但不限于自己)Kohana PHP因为它具有温和的学习曲线。

答案 4 :(得分:1)

PHP的主要内容是你需要“保持演示和程序逻辑分离”。或者换句话说,确保您没有将html回显到您开展业务或处理逻辑的脚本中间的屏幕。

您的第二个解决方案是解决问题的一个相当常见(而不是坏)的解决方案。它允许您构建包含所有布局信息的单个页面,然后包含要呈现的特定页面内容。显然,如果您需要将布局模板的大部分从一个页面交换到下一个页面,这将无法正常工作。在这种情况下,您的第一个解决方案会更好。

最后,我强烈建议您查看各种PHP框架,例如Zend FrameworkSymfonyCakePHP,以了解它们如何处理此问题。如果你找到一个你喜欢的,那就试试吧。否则,你仍然可能会对如何构建自己的网站有一些很好的想法。

答案 5 :(得分:0)

这实际上取决于您正在设计的网站。如果要重新使用组件,那么使用包含的方法将起作用。您可以尝试使用某种母版页,只需在其中呈现您想要的页面

答案 6 :(得分:0)

在footer.php中,header.php和footer,sopyright等中的菜单和标题更容易让您的生活更轻松。 然后只需将这些文件包含在您创建的每个页面中。

答案 7 :(得分:0)

取决于

页面内容是否存储在数据库中?如果是这样,您可能最好为每个内容页面提供一个模板,该模板只从数据库中获取内容,标题和元信息并将其插入模板中。您甚至可以拥有不同类型的页面(新闻,静态内容页面,存档页面等),这些页面都可以有不同的模板。

如果内容位于或多或少的平面文件中,那么您提供的两项建议是可行的,我认为后者是最容易维护的建议。

答案 8 :(得分:0)

过去曾使用这两种技术,我发现前者更灵活,但它可以鼓励不良做法。后者提供了更加一致的用户体验,因为它将您的所有站点范围的逻辑保存在一个地方,并阻止您进行一次性例外。

我实际上正在将我几年前写的网站从包含的页眉/页脚/菜单模型转换为母版页模型。原始的包含系统干净简洁,效果很好。但是,我创建的内容越多,我就越意识到项目开始违反DRY principle。网站上的每个页面都以相同的方式开始和结束(重复应该总是发出警告信号)并且我很想通过省略单个包含和编写一次性替换来使标准布局例外。 (谢天谢地,我经常没有屈服于这种诱惑!)

重构网站使页面更加一致,布局更容易更新(您可以“一目了然”看到整个页面),并且更容易创建新页面。