include和require的区别

By | 2012/11/13

脑袋不好用了,所以思考过的东西需要记录下来,以备后查,进入正题。

不考虑include_once和require_once的原因是这两个函数因为会为了避免重复载入而去检查,影响了执行效率,所以好的程序架构应该避免出现重复载入的情况,从而避免上面两个函数的使用。那么标题中两个函数有什么区别呢?

翻了下互联网,发现大家基本都是抄的一个人的分析,偶有个人的见解,还是查看官方文档,可知:

require函数和include函数实际上是一样的,只不过require函数载入文件错误时会发生严重的错误并中止程序的运行,而include不会,include之后的代码可以顺利执行。

上面就是官方的解释,简洁明了。国内文章大多说require会在执行之前使用文件内容替换require()语句,所以效率高。个人认为纯属扯蛋,替换和执行时读取会造成速度不一样?如果说是替换的话,那么在require语句之前应该可以调用文件中的函数,很明显这么做会报错。本人没有能力研究代码,但我只在乎实践。

那么这两者实际使用有什么不同呢?主要是在包含的内容上,这个是经验活,如果是关键的全局函数、类等重要的功能代码,就使用require;如果是载入头部、尾部的模板,页面上某个模块的功能,就使用include的,这样即时出错也不影响整个页面。

ps:大家都说$a.$b的性能比”$a$b”高,依据是源码分析,我也看过相应的代码分析,但我觉得后者性能更好,写循环测试了下确实是后者性能好。

ps:开发的时候error_reporting(E_ALL)还是有必要的,任何错误都不应该放过,哪怕是notice。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据