登录  /  注册

php关于include_once与include之间的区别详解

黄舟
发布: 2017-06-25 11:49:47
原创
2411人浏览过

include如果引入两个文件,都有一个相同的函数名,那么就会发生重定义的错误。使用include_once可以避免此错误,一般都_once用的比较多。应该根据实际情况需求include和_once的区别。

include和require区别
当要包含的文件不存在时,include产生一个警告(warning),该语句后面的程序会继续执行;而 require则导致一个致命错误(fatal error),程序就此终止。

include_once和require_once
应该用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。
 
1.incluce在用到时加载,这个函式一般是放在流程控制的处理区段中
2.require在一开始就加载,这个函式通常放在   php   程式的最前面
3._once后缀表示已加载的不加载

关于这个问题网上一搜一大把的,include和include_once没什么大研究,区别就是include不管你之前有没有引入过该文件,都仍然引入,include_once则检查文件有没有已经在前面引入过了,如果有了就不再引入了
一般推荐用require_once,所以建议楼主多查查include和require的区别,网上很多。这里简单说两个:
incloude引入的文件发送错误或文件不存在,include会发出一条警告并继续执行程序,而require则会产生致命错误并终止程序。
require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。require_once()函数的作用和 require() 是几乎相同的
include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。如同此语句名字暗示的那样,只会包括一次。clude_once()函数的作用和 include() 是几乎相同的
require_once的作用是会检查之前是否加载过该文件,如果没有加载则加载 如果加载过就不再次加载。比如某文件定义了一个类型 如果两次加载该文件会出现错误,require_once会避免这个错误.

自从认识include和include_once的区别后 一直使用include_once ,认为它只加载一次,可以避免重复加载,而且貌似自己也无法很好的确定是否已经重复加载,原来自己一直都是错误的。

其实也有好处吧 如果项目是几个人开发的话,include_once倒也比较好的

include_once执行顺序

尝试解析文件的绝对路径, 如果能解析成功, 则检查EG(included_files), 存在则返回, 不存在继续

打开文件, 得到文件的打开路径(opened path)

拿opened path去EG(included_files)查找, 是否存在, 如果存在则返回, 不存在继续

编译文件(compile_file

最近关于apc.include_once_override的去留, 我们做了几次讨论, 这个APC的配置项一直一来就没有被很好的实现过.

在这里, 我想和大家在此分享下, 这个问题的原因, 以及对我们的一些启示.

关于使用include还是include_once(以下,都包含require_once), 这个讨论很长了, 结论也一直有, 就是尽量使用include, 而不是include_once, 以前最多的理由的是, include_once需要查询一遍已加载的文件列表, 确认是否存在, 然后再加载.

诚然, 这个理由是对的, 不过, 我今天要说的, 是另外一个的原因.

我们知道, PHP去判断一个文件是否被加载, 是需要得到这个文件的opened_path的, 意思是说, 比如:

以上就是php关于include_once与include之间的区别详解的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号