题
我不确定我应该怎么表达这一点,但我会试一试。
我最近开始编码我的投资组合在面向对象的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版本。
此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和文件结构匹配很有用。