到目前为止,我的网站上有大约3个PHP包含。
<?php include("includes/header.html"); ?>
我有什么理由不添加这些吗?
答案 0 :(得分:8)
不是真的。它们经常使用并且通常包括其他PHP文件。那些PHP文件经常包含其他文件,所以真的没什么问题。
顺便说一句,如果你使用这种技术来包含其他PHP文件(例如包含你正在使用的函数的库文件),最好使用require_once
(还有include_once
,以及普通require
);如果无法找到其参数,require
将导致错误,并且不会继续尝试呈现页面。即使您从不同的地方致电require_once
(或include_once
),require_once
(和include_once
)也不会多次包含同一文件。
答案 1 :(得分:6)
我怀疑你做的是这样的事情:
<?php
include("session_and_headers.php");
include("top_nav.html")
include("right_sidebar.html");
?>
... actual content generation code ...
<?php
include("footer.html");
include("js_loader.php");
?>
对于简单的静态网站,或者用户只有几个不同的视图的情况,没有任何内在错误。
但是,如果您只想在某些类型的页面上使用稍微不同的侧栏,会发生什么?你把逻辑放在哪里确定,这对下一个继承你代码的人来说是显而易见的?
如果你遇到这些复杂问题,我建议采用MVC方法(即使你主要使用它的视图/控制器方面)。
如果您在PHP中使用nn页面站点只需要共享公共元素,那么就没有理由避免根据需要简单地包含文件。
请不要这么看对PHP 不好,再看看它难以维护吗?
答案 2 :(得分:1)
编写面向对象的代码并升级到PHP 5有一个好处:您可以使用class autoloading避免“大量包含”。
答案 3 :(得分:0)
唯一的缺点是性能 - 每个都包括系统调用的成本。除非您的流量很大,否则3或10都是小变化,但大约100可能是个问题。解决方案是使用字节码缓存(如apc)并将realpath_cache_size变量设置为更高的值(默认值足以容纳大约100-200个文件,具体取决于路径长度)。 除此之外 - 没有太大的问题。