我不确定我应该怎么表达这一点,但我会试一试。
我最近开始编码我的投资组合在面向对象的PHP我想知道如果这是根据最佳做法使用单一的页面内容的变化取决于SQL数据和$_GET变?

如果这么/不,为什么?

编辑:看看我的下一个职位,更深入的详细信息。

有帮助吗?

解决方案

您是否在询问使用前端控制器模式,单个文件是否满足您的所有请求?通常这是通过index.php和mod_rewrite来完成的,其中所有请求都将URL的其余部分作为查询字符串中的参数提供给它。

http://www.onlamp.com /pub/a/php/2004/07/08/front_controller.html

我倾向于建议将此模式用于应用程序,因为它为您提供了一个处理身份验证等功能的地方,并且通常您需要在更严格的级别集成内容,其中新功能是已注册的类与控制器通过某种机制很有意义。

对其他人提到的URL的担忧并不准确,因为URL结构和文件结构之间没有真正的关系,除非您使用古老的网站构建技术。一大堆apache功能基于以下概念:文件/目录结构和URL结构是不同的概念(别名模块,重写模块,内容协商等等)

其他提示

  • 不可伸缩的
  • 难以管理的代码
  • 分析器有分析一切
  • 完美的例子码的气味
  • 一个错误崩溃你的整个网站

如果你指的是一个登陆页面(例如index.php)然后使用会话变量等来确定需要包含哪些代码,那么是的,这是一种常用的技术。

编辑:上面我的意思是Daniel Papasian在他的优秀帖子中详细解释了什么

如果您的意思是将所有HTML,SQL和PHP放在一个文件中,那么请不要,因为GateKiller指出了原因。

该actaul页文件应包含什么只是不同的有关页的一个标准的"网页"在你的网站(例如网页的标题,索引页面可能具有代码,以获得最新的消息等)。一切都很其是(或可能)被用于多于一个地方,应该移到外部php文件,并包括在内。实例有:

  • 数据库的信息来源(密码,用户名,等等)
  • 头/脚
  • 登陆代码

这使得码多的到来管理。例如,如果你改变数据库的密码,它的唯一文件,该文件需要更新,或者如果决定增加一个横幅广告,标题,其次只有一页非所有网页需要改变。

这也使得增加新的功能要少得多的工作,例如一个新的页面可以简单的是:

<?php
require ('config.php')
require ('start.php')
require ('header.php')
//custom page stuff
require ('footer.php')
?>

或增加自动登录通过饼干,是一个简单的变化以登录()function(创建一个cookie),start.php (检查cookie+叫登录()).

你也可以easyily传这些文件的其他项目的未来。

提到的所有门禁杀手+你也不能利用后期绑定。

  • 难以管理的代码

如果您使用的版本控制,这将是一个很难回滚任何变化,可能发生于一个单个"网页"的网站。因为你会有合并后在任何可能有来后

除非你使用mod重写

,否则它不是搜索引擎友好的

我倾向于不同意大多数情况 - 如果您的网站由自定义CMS或类似的东西管理,则没有理由不使用一个页面。

我做了类似的事情我曾经写过一段时间。所有客户端都有一个default.asp页面,用于查询数据库中的主题,内容,附件和成员权限。为了进行更改,我只进行了一次更改,如果更改需要,则将其复制到我的其他客户端。

这当然不适用于大多数情况。如果你的网站有很多不同的东西(我的cms只是在加载页面时重复某些功能),那么多个页面确实是唯一的方法。

对于那些感兴趣的人,有一个框架使用这个确切的模型。最初用于ColdFusion。这种方法仍有一个社区,大约一年前(2007年12月)发布了5.5版本。

FuseBox Framework网站

维基百科条目

此screendump和以下说明可能会更好地了解我的代码目前的样子。

我使用与'互联网朋友'相同的模型,Daniel Papasian和其他一些人提到的模型;前控制器。

我的索引页面如下所示。

require_once 'config.php';
require_once 'class_lib/template.php';

$template = new template($config);
$template->dataQuery();
$template->pageCheck();
$template->titleAssembly();
$template->cssAssembly();
$template->metaAssembly();
$template->menuAssembly();
$template->content();
echo $template->publish();

类构造打开主模板文件并将其加载到一个变量中,每个方法都可以通过用生成的代码替换标记来操作它。 丑陋的URL并不是真正的问题,因为我将使用mod_rewrite来清理它 但是,Papasian有一点,这种方法更适合基于网络的应用程序等 点击 我首先对我的问题不是非常具体而道歉。
此外,非常感谢所有拒绝帮助的人。

我经常使用没有.php扩展名的php文件(即网站)并添加

<Files site>
ForceType application/x-httpd-php 
</Files>

到.htaccess,它使apache将文件解释为php文件。

您可以将vars解析为网址中的文件: http:// www。 yourdomain.com/site/var1/var2/var3

使用

$var_array = explode("/",$_SERVER['REQUEST_URI']); 
$var1 = $var_array[1];
$var2 = $var_array[2];
$var3 = $var_array[3];

获得vars。通过这种方式,您可以在没有modrewrite的情况下使用searchengingfriendlyurls的单个文件。

re:URL和文件结构

我转换了一个网站,其中所有内容都在数据库中,并使用索引访问?p = 434模型。使用数据库没有任何好处,并且该网站让必须添加内容的人感到困惑,因为他们必须使用浏览器编辑内容,页面只是数字。

我将所有内容都删除并将其放在单独的文件中。每个人都有一个明智的名字,并组织成文件夹。每个文件看起来像这样:

require('sitelib');
do_header('about', 'About Us');
// content here
do_footer();

客户喜欢它。他们能够使用任何HTML编辑器进入,找到正确的文件并进行更改。他们能够制作新的页面。总而言之:有时,让URL和文件结构匹配很有用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top