require和include的区别(PHP)

简介:
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>

概括:require 一次包含以后,下次的代码相当于放在文件中了,而include是每次执行都要解释一次,也就是再去读那个文件一次。

下面的示例:

con_db.php

<?php
$dbh = mysql_connect('localhost','','');
mysql_select_db('admreqs');
?>

在实际应用时,我们可以在程序中调用这个文件。

如require("con_db.php")或include("con_db.php)

这时,两个函数的效果是差不多的。

但如果这样用

filename.php

<?php
require("con_db.php")
function myfun($par1,$par2)
{包含对数据库处理的语句}
.....
myfun($par1,$par2);
.....
myfun($p1,$p2);
?>

  文件到myfun处将不能继续执行,因为函数里无法得到外面的变量(include也是一样的)。除非把$dbh作为一个变量传给函数。这又增加了调用函数的复杂度。

  我们可以通过把require或include放在函数里面来解决这个问题。

  如果用include,文件的第一个函数调用处将顺利通过,但第二个调用将无法执行,原因是不能在没有关闭数据库时在打开一次,也就是说,con_db.php执行了两次。将include换成require,一切都正常。

  也就是说,require类似于一次预扫描,在程序执行时,无论在函数里或是函数外,都将先把require的文件执行,且只执行一次。而include则是每执行一次就调用一次文件,即这次执行后,下次再执行执行到这里,仍将再执行一次。

因此,如果在一个循环中,某些语句你只想执行一次,那你用require包括它们就可以了。


本文转自 netcorner 博客园博客,原文链接:http://www.cnblogs.com/netcorner/archive/2009/11/18/2912049.html   ,如需转载请自行联系原作者


相关文章
|
缓存 PHP
Composer报错: require(): Failed opening required ‘.../markbaker/matrix/.../functions/adjoint.php‘
Composer报错: require(): Failed opening required ‘.../markbaker/matrix/.../functions/adjoint.php‘
294 0
PHP 零基础入门笔记(8):PHP 文件包含include/require
PHP 零基础入门笔记(8):PHP 文件包含include/require
146 0
|
PHP
深入理解PHP之require/include顺序
作者: Laruence(   ) 本文地址: http://www.laruence.com/2010/05/04/1450.html 转载请注明出处 在大型的Web项目中, include_path是一个模块化设计的根本中的根本(当然,现在也有很多基于autoload的设计,...
1058 0
|
PHP
****php:require_once(dirname(__FILE__)."/./config_uc.php");
Q:麻烦清楚地讲解一下这句的意思,具体路径是怎样的,这个文解在 根目录,如果我想放在根目录下的tieba文件夹里,应该怎么修改/./ 这个是表示什么?A: require_once(dirname(__FILE__).
1121 0
|
PHP Java
php require vs. include
1. require在代码执行前被预处理,被引用的文件内容会替代掉require语句。    include在代码执行到那一句才被处理,相当于执行流跳到被执行的文件,执行完再跳回来。
650 0
|
PHP JavaScript
php使用<?php include之后页首有空白
1.今天做这一个页面的时候发现如果使用 ,注意这个不能写成,要不然IE浏览器还是会有乱码的。 作者:Tyler Ning 出处:http://www.cnblogs.com/tylerdonet/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com &nbsp;联系我,非常感谢。
762 0