<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[php中include和require函数的区别，注意体现在包含的文件不存在，require：程序终止  include：报警，继续执行。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Tue, 28 Jul 2009 05:59:13 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：本来想自己写的，算了，这个哥们写得更好，引用得了，http://www.cnblogs.com/xia520pi/p/3697099.html 。<br/>官方文档说include和require唯一的区别就是出现找不到文件后会不会直接执行区别，条件引用说法不对，include和require两者的不同，不同点2经测试好像不是太明显。<br/>英文：<br/>The include construct will emit a warning if it cannot find a file; this is different behavior from require, which will emit a fatal error.<br/>中文：<br/>include触发警告，require触发错误，也就是说include没有发现文件会继续运行，而require发现没有文件则会停止运行,require ~once 会造成程序终止，如果要回滚事务什么的就完了,或者后面要关闭数据库链接什么的:<br/>深究：include触发警告，require触发错误 为什么？问写php底层的人，为毛这样搞。<br/>示例：在include找不到文件时程序继续运行，而require则不会继续运行。<br/>[root@iZ25dcp92ckZ php]# cat include2.php <br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?PHP
&nbsp;&nbsp;&nbsp;&nbsp; include&nbsp;&nbsp;(&quot;test999.php&quot;);
&nbsp;&nbsp;&nbsp;&nbsp; echo&nbsp;&nbsp;&quot;abc&#92;n&quot;;
?&gt;
</textarea><br/>[root@iZ25dcp92ckZ php]# php include2.php&nbsp;&nbsp;&nbsp;&nbsp;<br/>abc<br/>[root@iZ25dcp92ckZ php]# cat include3.php <br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?PHP
&nbsp;&nbsp;&nbsp;&nbsp; require (&quot;test999.php&quot;);
&nbsp;&nbsp;&nbsp;&nbsp; echo&nbsp;&nbsp;&quot;abc&quot;;
?&gt;
</textarea><br/>[root@iZ25dcp92ckZ php]# php include3.php&nbsp;&nbsp;&nbsp;&nbsp;<br/>[root@iZ25dcp92ckZ php]# <br/><br/>include和require两者的不同点二：<br/>.require 不管require语句有没有执行，程序执行包含文件都被加入进来 include只有执行的时候文件才会被包含<br/>&nbsp;&nbsp; 在 判断 函数里面，用include显然是比较好的<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php&nbsp;&nbsp;&nbsp;&nbsp;
$files=array(&#039;first.php&#039;,&#039;second.php&#039;,&#039;third.php&#039;);&nbsp;&nbsp;&nbsp;&nbsp;
for($i=0;$i&lt;count($files);$i++)&nbsp;&nbsp;&nbsp;&nbsp;
&#123;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;include $files[$i];&nbsp;&nbsp;&nbsp;&nbsp;
&#125;&nbsp;&nbsp;&nbsp;&nbsp;
?&gt;
</textarea><br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$files=array(&#039;first.php&#039;,&#039;second.php&#039;,&#039;third.php&#039;);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($i=0;$i&lt;count($files);$i++)&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include $files[$i];&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;
 ?&gt;&nbsp;&nbsp;
</textarea><br/><br/><br/>====================================================================<br/><br/>php提供了两种包含外部文件的方法：include()和require()。include()语句是一个常规的php函数；而require()是一种特殊的语言结构，它的使用受到一些限制。对这两者来说，不管使用哪个语句来包含文件，解析程序都将退出php模式并在目标文件的开头进入HTML模式。这意味着目标文件中的所有应该作为php脚本执行的代码都必须被包含在有效的php起始标记和终止标记中。<br/>　　在同一脚本中，每次出现include()函数，它都会被执行，它甚至有可能被包含在循环或条件语句中。这意味着通过使用条件判断是否包含一个文件，它还可以使用循环结构包含一组文件。include()语句对文件的处理将终止。<br/>　　require()语句与include()语句是不同的，它不能受任何控制结构的控制。这说明使用require()不能有条件的包含文件。如果这个语句出现在循环中，或者位于取值为假的条件语句中，它也都会执行，并且只执行一次。另一个区别是，使用require()语句包含的文件不能有返回值。试图在require()语句中返回值将会产生一个解析错误<br/><br/>0.require加上判断并没有进入程序逻辑也包含进去了：http://www.cnblogs.com/dyllen/archive/2013/03/08/2950826.html<br/><br/>1.性能上，没有差别<br/><br/>2.require 不管require语句有没有执行，程序执行包含文件都被加入进来 include只有执行的时候文件才会被包含<br/>&nbsp;&nbsp; 在 判断 函数里面，用include显然是比较好的<br/><br/>3.循环体：&nbsp;&nbsp;require()不能在循环体中根据条件的不同而包含不同的文件。require()语句只会在第一次执行时调用它所包含的文件中的内容替换本身这条语句，当再次被执行时只能执行第一次所包含的语句。但是include()语句可以在循环体中来包含不同的文件。<br/>Php代码<br/><br/><br/> <br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;补充 require 文件在程序执行过程中只能被包含一次，而include每次执行，文件都重新被包含，选择include的话，<br/><br/>保证包含文件多次包含不会出错，举例：<br/>Php代码<br/> conn.php：&nbsp;&nbsp;<br/><textarea name="code" class="php" rows="15" cols="100">
 &lt;?php&nbsp;&nbsp;&nbsp;&nbsp;
 $conn =&nbsp;&nbsp;mysql_connect(’localhost’,’’,’’);&nbsp;&nbsp;&nbsp;&nbsp; 
 mysql_select_db(’php’);&nbsp;&nbsp;&nbsp;&nbsp; 
 ?&gt;&nbsp;&nbsp;&nbsp;&nbsp;
</textarea>&nbsp;&nbsp;&nbsp;&nbsp;<br/><textarea name="code" class="php" rows="15" cols="100">&nbsp;&nbsp;
 &lt;?php&nbsp;&nbsp;&nbsp;&nbsp;
 function fun($a)&nbsp;&nbsp;&nbsp;&nbsp;
 &#123;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;include(&quot;conn.php&quot;);&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp; //数据库处理语句&nbsp;&nbsp;&nbsp;&nbsp;
 &#125;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; //…..&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp; fun(&quot;aaa&quot;);//第一次调用&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp; //…..&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; fun(&quot;bbb&quot;);//第二次调用&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp; 
 ?&gt;&nbsp;&nbsp;&nbsp;&nbsp;
</textarea><br/>conn.php：<br/><textarea name="code" class="php" rows="15" cols="100"> 
&lt;?php&nbsp;&nbsp;
$conn =&nbsp;&nbsp;mysql_connect(’localhost’,’’,’’);&nbsp;&nbsp; 
mysql_select_db(’php’);&nbsp;&nbsp; 
?&gt;&nbsp;&nbsp;
</textarea><br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php&nbsp;&nbsp;
function fun($a)&nbsp;&nbsp;
&#123;&nbsp;&nbsp;
&nbsp;&nbsp; include(&quot;conn.php&quot;);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;//数据库处理语句&nbsp;&nbsp;
&#125;&nbsp;&nbsp;
&nbsp;&nbsp;//…..&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;fun(&quot;aaa&quot;);//第一次调用&nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;//…..&nbsp;&nbsp;
&nbsp;&nbsp;fun(&quot;bbb&quot;);//第二次调用&nbsp;&nbsp;
&nbsp;&nbsp;
?&gt;&nbsp;&nbsp;
</textarea><br/><br/>&nbsp;&nbsp; 在第二次调用的时候会出错，但是把 include 换成 require 就不会出问题。<br/><br/>&nbsp;&nbsp;因为 require 文件只在读到该页面的时候调用一次，而 include 在每次调用含有&nbsp;&nbsp; fun 的地方都调用，所以就出现了数据库连接还没关闭就再次连接的错误。<br/><br/>&nbsp;&nbsp;因此在循环中只要调用一次的用 require ，其他地方这两个都可以用。<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;4.报警：如果被包含的文件不存在，require：程序终止&nbsp;&nbsp;include：报警，继续执行<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;5.require include 比 file_get_content慢 
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] php中include和require函数的区别，注意体现在包含的文件不存在，require：程序终止  include：报警，继续执行。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>