TABLE border=0 cellPadding=0 cellSpacing=0 height="100%" width="100%"> require() 如果在PHP中"URL fopen wrappers"项是打开的(这是默认的配置),你可以在require()中使用URL代替本地路径。更多的信息参见Remote files和fopen()。 一个重要的提示是:当一个文件被include()或require()时,是怎样工作的,从目标文件开始分析PHP模块和HTML模块的点滴,在结束时重新摘要PHP模块。 前提是,有一些被有效地PHP开始和结束标签包含着的可执行的PHP代码在文件中。 require() 实际上不是一个PHP函数:正确的说,它是一个语言的构成部分。它的规则与函数有一些不同。如,require() 不会受包含控制结构的控制。另外,它不会返回任何值;尝试从require()调用中读取一个返回值的结果是解析错误。 不同的是include(), require() 将总是读目标文件,即使它没有可执行的行。如果你想有条件的包含一个文件,请使用include()。条件语句不会影响require()。 可是,if the line on which the require() occurs is not executed, neither will any of the code in the target file be executed. 类似的,循环控制也不会影响require()的行为。 尽管包含文件仍然受循环的控制,但是require() 只执行一次。 这意味着,你不能把require() 语句放在一个循环语句中,期待着它能在每一次循环中包含不同的文件。要这样做,请使用include() 语句。
当一个文件被require()包含时, 包含着的代码将继承发生require() 那行的变量作用域。在调用文件行的任何可用变量在被调用文件中都将可用。如果require() 发生在正在调用文件中的函数里,这时被调用文件中的全部代码就好像已经被定义在了函数中一样。 如果require()包含的文件是经过HTTP使用fopen打开的,如果目标服务器能作为PHP代码解析目标文件,变量可以使用带有URL的有HTTP GET请求字符串的require()传递。严格的说require()一个文件和继承它的父文件的变量作用域是不同的:这个脚本实际上是运行在远程服务器上,在本地脚本中包含的是它的结果。
/* Won't work; file.txt wasn't handled by someserver. */ /* Won't work; looks for a file named 'file.php?varone=1&vartwo=2' /* Works. */ $varone = 1;
在PHP 3中,只要语句在被require()文件的全局作用域内发生,被require() 的文件可能执行一个return 语句。不可以发生在任何块(大括号中)的内部。在PHP 4中,这人功能已被停止。如果你需要这样的功能,参见include()。 参见 include(), require_once(), include_once(), readfile(), 和 virtual().
|