你如何在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 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数