PHP中的require引入一个文件,很多都说是在程序执行之前就先读入了要引入的文件

我不明白的是,既然是在程序执行之前就读入了,那么为什么引入的文件名还可以是一个变量呢

终于遇到个和我又同样疑惑的人了。是滴,我也会在看了手册后发现“require和include除了处理失败方式不同,其他都完全一样”,但查阅其他资料后发现,貌似还有一个载入时机的区别。困扰好久,一直不得解。不过我尝试这么去理解的,偏差地方,还请权威大佬纠正。这两个函数(准确说是语句),最终的作用是将引入的文件复制粘贴到当前引入行。程序要想正常运行,肯定是所有的需要都准备好,否则肯定会出错!(注意出错一词),我认为正式这里的差异化才验证了我的理解。require确实实在zend预编译时,将其引入的文件内容复制到当前,然后执行预编译和执行。而include在预编译的被编译成opcode了,当执行倒这一指令时,会像函数调用一样进入一个栈的环境,在这里完成对引入文件的内容的复制和编译,进而执行(这里就是我的理解)。如果这时候出错了,直接跳出栈,并不影响主流程的进展,这也就是为什么include出错只是warning,而由于require是在主流程里面,所以一旦出错就是致命的(这里的结果呼应了,我的理解)。so,不当之处,请大佬指点。(纯手打。。。。)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-12
你要知道不引入怎么执行呢?不管它怎么引入,实质上就是类似把require XXX这一行代码替换成要引入的这个文件里的内容.其实引入变量也是指定到文件位置上,嫌麻烦可以使用自动引入__autoload(),现在框架一般就在用这个追问

其实我想问的也就是它和include的区别,好多资料上都写的是程序在运行到include语句的时候才会把,相应该的文件包涵进来,而require是在php脚本的执行前就会读入它所引入的文件,这个执行前应该是在那一个阶段,是在编译的时候吗??而手册上是这要说的require 和 include 几乎完全一样,除了处理失败的方式不同之外.那么为什么还有上面引入的不同呢

本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网