你如何在php中组织你的页面?

Posted

技术标签:

【中文标题】你如何在php中组织你的页面?【英文标题】:How do you organize your page in php? 【发布时间】:2011-08-21 20:34:22 【问题描述】:

通常我有包含页眉/页脚/菜单和页面内容的主页 (index.php)。从 GET/POST 方法检查一些变量的内容被更改:对于每个条件,我加载请求的页面。

类似的东西:

website/
website/index.php?explore=forum
website/index.php?explore=users
website/index.php?explore=articles

等等……

现在,我的网站越来越大,我认为最好的方法是直接为每个部分调用一个“索引”页面;所以例如上面,这将被翻译为:

website/
website/forum/
website/users/
website/articles/

看起来更好,管理起来更舒适!问题是,如果我这样做,我需要为每个区域(包括页眉/页脚/菜单)实现轮廓。

所以我不知道是否有更好的策略,是否方便。欢迎任何建议/意见!谢谢

【问题讨论】:

内容的边框,作为页眉/页脚/菜单:) 看看 TinyMVC 框架,它的控制器和路由tinymvc.com/documentation/index.php/Documentation:Controllers 【参考方案1】:

您可以使用 .htaccess 重写规则将那些漂亮的 URL 重定向到单个 index.php 文件。

唯一的问题是您必须想出一种方法来区分要重定向的 URL(website/forum/website/users/ 等)和普通的(website/css/website/images/ 等) .).

有一些选择:

    您可以使用website/page/[pagename]/,而不是使用website/[pagename]/。然后您的正则表达式可以将每个匹配 ^/?page/[\w+]/?$ 的 URL 重定向到 index.php?explore=[pagename] 只需明确列出您要重定向的每个页面;使用像 ^/?[forum|users|articles]/?$ 这样的正则表达式 别担心。如果您只重定向不包含文件名的 URL,那么当您 尝试引用 CSS 或图像(即, 包含文件名的 URL) ,这应该不是问题。

【讨论】:

【参考方案2】:

在我们的纯 PHP 项目中(没有 Symfony 之类的框架或其他框架),我们肯定有不同的目录和每个部分的单独索引文件,就像你说的那样。

但我们通常只有一个页眉包含文件和一个页脚文件,适用于网站上的每个页面。这样可以使页眉和页脚保持一致,并且更易于管理。

您总是可以在页眉和页脚中添加一行

<?php include('../includes/head.php'); ?>

如果您想将这些文件保存在它们自己的目录中。我认为我们实际上在包含路径上有 /includes,所以我们的行只是说

<?php include('head.php'); ?>

【讨论】:

【参考方案3】:

查看 MVC 框架,例如 Symfony (PHP)、Rails (Ruby) 或 Django (Python)。

在 MVC 设计模式中,您通常有一个前端控制器来处理所有加载。您拥有与数据源交互的模型,并且拥有定义用户界面的视图。控制器通过模型加载数据,然后将这些数据传递给视图。

在您的示例中,每个部分都有不同的控制器,并且不同的交互类型(最常见的是创建、列出、删除、编辑)具有不同的操作。

【讨论】:

性能方面,与 ZendFramework 或 Code Igniter 相比,Symfony 很糟糕。而且,Symfony 的大部分用户群都在东欧和印度,所以如果您选择英语是您选择的语言,请在论坛上玩得开心……如果您不介意学习一门全新的语言,Rails 和 Django 都可以。 ..【参考方案4】:

您可以通过执行 apache 重写来使用 top 策略获得底部结果。例如,可以重写 /forum 以访问 www.yoursite.com/index.php?article=forum 等等。

这是完整指南:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

【讨论】:

但这并没有改变什么!只是要显示一个不同的网址:O 我的意思是您不必为每个示例调用特定的索引页面。许多 CMS 系统调用单个索引页面并从数据库中获取内容。听起来你有一个文件,里面有一个巨大的 switch 语句。整个策略归结为对您有用的方法。如果您不介意开销和学习曲线,请考虑使用框架。如果您不想改变太多,请重写。如果您希望在物理上隔离您的代码,请考虑使用每节一页并包含页眉页脚的重新结构。这都是个人喜好。

以上是关于你如何在php中组织你的页面?的主要内容,如果未能解决你的问题,请参考以下文章

php 你如何确保 $_POST 数据来自你的表单而不是外部影响?

PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数

学透CSS-如何组织你的CSS代码 [学]

如何“不从特定页面删除'php'扩展名?

使用 khal 和 vdirsyncer 组织和同步你的日历

php中如何使用KindEditor编辑器