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