philip Sat Jan 19 05:37:31 2002 EDT
Modified files:
/phpdoc/en/language control-structures.xml
Log:
include/require: Update reflects change in behavoir as of 4.0.2.
PHP3 info condensed into a <note>
Duplicate info removed, most docs are within include()
*_once : Updated.
Index: phpdoc/en/language/control-structures.xml
diff -u phpdoc/en/language/control-structures.xml:1.50
phpdoc/en/language/control-structures.xml:1.51
--- phpdoc/en/language/control-structures.xml:1.50 Sat Jan 19 02:09:31 2002
+++ phpdoc/en/language/control-structures.xml Sat Jan 19 05:37:31 2002
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.50 $ -->
+<!-- $Revision: 1.51 $ -->
<chapter id="control-structures">
<title>Control Structures</title>
@@ -34,7 +34,7 @@
As described in <link linkend="language.expressions">the section about
expressions</link>, <replaceable>expr</replaceable> is evaluated to its
Boolean value. If <replaceable>expr</replaceable> evaluates to &true;,
- PHP will execute <replaceable>statement</replaceable>, and if it evaluates
+ PHP will execute <replaceable>statement</replaceable>, and if it evaluates
to &false; - it'll ignore it. More information about what values evaluate
to &false; can be found in the <link
linkend="language.types.boolean.casting">'Converting to boolean'</link>
@@ -1020,499 +1020,340 @@
</note>
</sect1>
- <sect1 id="function.require">
+
+ <sect1 id="function.require">
<title><function>require</function></title>
+
<simpara>
- The <function>require</function> statement replaces itself with
- the specified file, much like the C preprocessor's
- <literal>#include</literal> works.
+ The <function>require</function> statement includes and evaluates
+ the specific file.
</simpara>
<simpara>
- If "URL fopen wrappers" are enabled in PHP (which they are in the
- default configuration), you can specify the file to be
- <function>require</function>ed using an URL instead of a local
- pathname. See <link linkend="features.remote-files">Remote
- files</link> and <function>fopen</function> for more information.
+ <function>require</function> includes and evaluates a specific file.
+ Detailed information on how this inclusion works is described in the
+ documentation for <function>include</function>.
+ </simpara>
+ <simpara>
+ <function>require</function> and <function>include</function>
+ are identical in every way except how they handle failure.
+ <function>include</function> produces a
+ <link linkend="internal.e-warning">Warning</link> while
+ <function>require</function> results in a <link linkend="internal.e-error">
+ Fatal Error</link>. In other words, don't hesitate to use
+ <function>require</function> if you want a missing file to halt processing
+ of the page. <function>include</function> does not behave this way, the
+ script will continue regardless. Be sure to have an appropriate
+ <link linkend="ini.include-path">include_path</link> setting as well.
</simpara>
+ <para>
+ <example>
+ <title>Basic <function>require</function> examples</title>
+ <programlisting role="php">
+<?php
+
+require 'prepend.php';
+
+require $somefile;
+
+require ('somefile.txt');
+
+?>
+ </programlisting>
+ </example>
+ </para>
<simpara>
- An important note about how this works is that when a file is
- <function>include</function>ed or <function>require</function>ed,
- parsing drops out of PHP mode and into HTML mode at the beginning
- of the target file, and resumes PHP mode again at the end. For
- this reason, any code inside the target file which should be
- executed as PHP code must be enclosed within <link
- linkend="language.basic-syntax.phpmode">valid PHP start and end
- tags</link>.
+ See the <function>include</function> documentation for more examples.
</simpara>
+ <note>
+ <simpara>
+ Prior to PHP 4.0.2, the following applies: <function>require</function> will
+ always attempt to read the target file, even if the line it's on never executes.
+ The conditional statement won't affect <function>require</function>. However,
+ if the line on which the <function>require</function> occurs is not executed,
+ neither will any of the code in the target file be executed. Similarly, looping
+ structures do not affect the behaviour of <function>require</function>. Although
+ the code contained in the target file is still subject to the loop, the
+ <function>require</function> itself happens only once.
+ </simpara>
+ </note>
<simpara>
- <function>require</function> is not actually a function in PHP;
- rather, it is a language construct. It is subject to some
- different rules than functions are. For instance,
- <function>require</function> is not subject to any containing
- control structures. For another, it does not return any value;
- attempting to read a return value from a
- <function>require</function> call results in a parse error.
+ See also <function>include</function>, <function>require_once</function>,
+ <function>include_once</function>, <function>eval</function>,
+ <function>file</function>, <function>readfile</function>,
+ <function>virtual</function> and <link
+linkend="ini.include-path">include_path</link>.
</simpara>
+ </sect1>
+
+ <sect1 id="function.include">
+ <title><function>include</function></title>
<simpara>
- Unlike <function>include</function>, <function>require</function>
- will <emphasis>always</emphasis> read in the target file,
- <emphasis>even if the line it's on never executes</emphasis>. If
- you want to conditionally include a file, use
- <function>include</function>. The conditional statement won't
- affect the <function>require</function>. However, if the line on
- which the <function>require</function> occurs is not executed,
- neither will any of the code in the target file be executed.
+ The <function>include</function> statement includes and evaluates
+ the specified file.
</simpara>
<simpara>
- Similarly, looping structures do not affect the behaviour of
- <function>require</function>. Although the code contained in the
- target file is still subject to the loop, the
- <function>require</function> itself happens only once.
+ The documentation below also applies to <function>require</function>.
+ The two constructs are identical in every way except how they handle
+ failure. <function>include</function> produces a
+ <link linkend="internal.e-warning">Warning</link> while
+<function>require</function>
+ results in a <link linkend="internal.e-error">Fatal Error</link>.
+ In other words, don't hesitate to use <function>require</function> if you want
+ a missing file to halt processing of the page. <function>include</function>
+does
+ not behave this way, the script will continue regardless. Be sure to have an
+ appropriate <link linkend="ini.include-path">include_path</link> setting as well.
+ </simpara>
+ <simpara>
+ When a file is included, the code it contains inherits the
+ <link linkend="language.variables.scope">variable scope</link> of the
+ line on which the include occurs. Any variables available at that line
+ in the calling file will be available within the called file, from that
+ point forward.
</simpara>
<para>
- This means that you can't put a <function>require</function>
- statement inside of a loop structure and expect it to include the
- contents of a different file on each iteration. To do that, use an
- <function>include</function> statement.
- <informalexample>
- <programlisting role="php">
+ <example>
+ <title>Basic <function>include</function> example</title>
+ <programlisting role="php">
<![CDATA[
-require ('header.php');
+vars.php
+<?php
+
+$color = 'green';
+$fruit = 'apple';
+
+?>
+
+test.php
+<?php
+
+echo "A $color $fruit"; // A
+
+include 'vars.php';
+
+echo "A $color $fruit"; // A green apple
+
+?>
]]>
- </programlisting>
- </informalexample>
+ </programlisting>
+ </example>
</para>
<simpara>
- When a file is <function>require</function>ed, the code it
- contains inherits the variable scope of the line on which the
- <function>require</function> occurs. Any variables available at
- that line in the calling file will be available within the called
- file. If the <function>require</function> occurs inside a
- function within the calling file, then all of the code contained
- in the called file will behave as though it had been defined
- inside that function.
+ If the include occurs inside a function within the calling file,
+ then all of the code contained in the called file will behave as
+ though it had been defined inside that function. So, it will follow
+ the variable scope of that function.
</simpara>
<para>
- If the <function>require</function>ed file is called via HTTP
- using the fopen wrappers, and if the target server interprets the
- target file as PHP code, variables may be passed to the
- <function>require</function>ed file using an URL request string as
- used with HTTP GET. This is not strictly speaking the same thing
- as <function>require</function>ing the file and having it inherit
- the parent file's variable scope; the script is actually being run
- on the remote server and the result is then being included into
- the local script.
- <informalexample>
- <programlisting role="php">
+ <example>
+ <title>Including within functions</title>
+ <programlisting role="php">
<![CDATA[
-/* This example assumes that someserver is configured to parse .php
- * files and not .txt files. Also, 'works' here means that the variables
- * $varone and $vartwo are available within the require()ed file. */
+<?php
-/* Won't work; file.txt wasn't handled by someserver. */
-require ("http://someserver/file.txt?varone=1&vartwo=2");
+function foo()
+{
+global $color;
-/* Won't work; looks for a file named 'file.php?varone=1&vartwo=2'
- * on the local filesystem. */
-require ("file.php?varone=1&vartwo=2");
+ include 'vars.php';
-/* Works. */
-require ("http://someserver/file.php?varone=1&vartwo=2");
+ echo "A $color $fruit";
+}
-$varone = 1;
-$vartwo = 2;
-require ("file.txt"); /* Works. */
-require ("file.php"); /* Works. */
+/* vars.inc is in the scope of foo() so *
+ * $fruit is NOT available outside of this *
+ * scope. $color is because we declared it *
+ * as global. */
+
+foo(); // A green apple
+echo "A $color $fruit"; // A green
+
+?>
]]>
</programlisting>
- </informalexample>
+ </example>
</para>
<simpara>
- In PHP 3, it is possible to execute a <literal>return</literal>
- statement inside a <function>require</function>ed file, as long as
- that statement occurs in the global scope of the
- <function>require</function>ed file. It may not occur within any
- block (meaning inside braces ({}). In PHP 4, however, this ability
- has been discontinued. If you need this functionality, see
- <function>include</function>.
- </simpara>
- <simpara>
- See also <function>include</function>, <function>require_once</function>,
- <function>include_once</function>, <function>readfile</function>,
- and <function>virtual</function>.
- </simpara>
- </sect1>
-
- <sect1 id="function.include">
- <title><function>include</function></title>
- <simpara>
- The <function>include</function> statement includes and evaluates
- the specified file.
- </simpara>
- <simpara>
- If "URL fopen wrappers" are enabled in PHP (which they are in the
- default configuration), you can specify the file to be
- <function>include</function>ed using an URL instead of a local
- pathname. See <link linkend="features.remote-files">Remote
- files</link> and <function>fopen</function> for more information.
- </simpara>
- <simpara>
- An important note about how this works is that when a file is
- <function>include</function>ed or <function>require</function>ed,
- parsing drops out of PHP mode and into HTML mode at the beginning
- of the target file, and resumes again at the end. For this reason,
- any code inside the target file which should be executed as PHP
- code must be enclosed within <link
- linkend="language.basic-syntax.phpmode">valid PHP start and end
- tags</link>.
+ When a file is included, parsing drops out of PHP mode and
+ into HTML mode at the beginning of the target file, and resumes
+ again at the end. For this reason, any code inside the target
+ file which should be executed as PHP code must be enclosed within
+ <link linkend="language.basic-syntax.phpmode">valid PHP start
+ and end tags</link>.
+ </simpara>
+ <simpara>
+ If "<link linkend="ini.allow-url-fopen">URL fopen wrappers</link>"
+ are enabled in PHP (which they are in the default configuration),
+ you can specify the file to be included using an URL (via HTTP)
+ instead of a local pathname. If the target server interprets
+ the target file as PHP code, variables may be passed to the included
+ file using an URL request string as used with HTTP GET. This is
+ not strictly speaking the same thing as including the file and having
+ it inherit the parent file's variable scope; the script is actually
+ being run on the remote server and the result is then being
+ included into the local script.
</simpara>
<para>
- This happens each time the <function>include</function> statement
- is encountered, so you can use an <function>include</function>
- statement within a looping structure to include a number of
- different files.
- <informalexample>
+ <example>
+ <title><function>include</function> through HTTP</title>
<programlisting role="php">
<![CDATA[
-$files = array ('first.php', 'second.php', 'third.php');
-for ($i = 0; $i < count($files); $i++) {
- include $files[$i];
-}
+<?php
+
+/* This example assumes that www.example.com is configured to parse .php *
+ * files and not .txt files. Also, 'Works' here means that the variables *
+ * $foo and $bar are available within the included file. */
+
+// Won't work; file.txt wasn't handled by www.example.com as PHP
+include 'http://www.example.com/file.txt?foo=1&bar=2';
+
+// Won't work; looks for a file named 'file.php?foo=1&bar=2' on the
+// local filesystem.
+include 'file.php?foo=1&bar=2';
+
+// Works.
+include 'http://www.example.com/file.php?foo=1&bar=2';
+
+$foo = 1;
+$bar = 2;
+include 'file.txt'; // Works.
+include 'file.php'; // Works.
+
+?>
]]>
</programlisting>
- </informalexample>
+ </example>
+ See also <link linkend="features.remote-files">Remote files</link>,
+ <function>fopen</function> and <function>file</function> for related
+ information.
</para>
<para>
- <function>include</function> differs from
- <function>require</function> in that the include statement is
- re-evaluated each time it is encountered (and only when it is
- being executed), whereas the <function>require</function>
- statement is replaced by the required file when it is first
- encountered, whether the contents of the file will be evaluated or
- not (for example, if it is inside an <link
- linkend="control-structures.if">if</link> statement whose
- condition evaluated to &false;).
+ Because <function>include</function> and <function>require</function>
+ are special language constructs, you must enclose them within a statement
+ block if it's inside a conditional block.
</para>
<para>
- Because <function>include</function> is a special language
- construct, you must enclose it within a statement block if it is
- inside a conditional block.
- <informalexample>
+ <example>
+ <title>include() and conditional blocks</title>
<programlisting role="php">
<![CDATA[
-/* This is WRONG and will not work as desired. */
+<?php
+// This is WRONG and will not work as desired.
if ($condition)
- include($file);
+ include $file;
else
- include($other);
+ include $other;
-/* This is CORRECT. */
+// This is CORRECT.
if ($condition) {
- include($file);
+ include $file;
} else {
- include($other);
+ include $other;
}
+
+?>
]]>
</programlisting>
- </informalexample>
+ </example>
</para>
<simpara>
- In both PHP 3 and PHP 4, it is possible to execute a
- <literal>return</literal> statement inside an
- <function>include</function>ed file, in order to terminate
- processing in that file and return to the script which called
- it. Some differences in the way this works exist, however. The
- first is that in PHP 3, the <literal>return</literal> may not
- appear inside a block unless it's a function block, in which case
- the <literal>return</literal> applies to that function and not the
- whole file. In PHP 4, however, this restriction does not
- exist. Also, PHP 4 allows you to return values from
- <function>include</function>ed files. You can take the value of
- the <function>include</function> call as you would a normal
- function. This generates a parse error in PHP 3.
+ Handling Returns: It is possible to execute a <function>return</function>
+ statement inside an included file in order to terminate processing in that
+ file and return to the script which called it. Also, it's possible to return
+ values from included files. You can take the value of the include call as
+ you would a normal function.
</simpara>
- <example>
- <title><function>include</function> in PHP 3 and PHP 4</title>
- <para>
- Assume the existence of the following file (named
- <filename>test.php</filename>) in the same directory as the main
- file:
- <programlisting role="php">
+ <note>
+ <simpara>
+ In PHP 3, the return may not appear inside a block unless it's
+ a function block, in which case the <function>return</function> applies
+ to that function and not the whole file.
+ </simpara>
+ </note>
+ <para>
+ <example>
+ <title><function>include</function> and the <function>return</function>
+statement</title>
+ <programlisting role="php">
<![CDATA[
+return.php
<?php
-echo "Before the return <br>\n";
-if (1) {
- return 27;
-}
-echo "After the return <br>\n";
+
+$var = 'PHP';
+
+return $var;
+
?>
-]]>
- </programlisting>
- </para>
- <para>
- Assume that the main file (<filename>main.html</filename>)
- contains the following:
- <programlisting role="php">
-<![CDATA[
+
+noreturn.php
<?php
-$retval = include ('test.php');
-echo "File returned: '$retval'<br>\n";
+
+$var = 'PHP';
+
?>
-]]>
- </programlisting>
- </para>
- <para>
- When <filename>main.html</filename> is called in PHP 3, it will
- generate a parse error on line 2; you can't take the value of an
- <function>include</function> in PHP 3. In PHP 4, however, the
- result will be:
- <screen>
-Before the return
-File returned: '27'
- </screen>
- </para>
- <para>
- Now, assume that <filename>main.html</filename> has been altered
- to contain the following:
- <programlisting role="php">
-<![CDATA[
+
+getfoo.php
<?php
-include ('test.php');
-echo "Back in main.html<br>\n";
-?>
-]]>
- </programlisting>
- </para>
- <para>
- In PHP 4, the output will be:
- <screen>
-Before the return
-Back in main.html
- </screen>
- However, PHP 3 will give the following output:
- <screen>
-Before the return
-27Back in main.html
-Parse error: parse error in /home/torben/public_html/phptest/main.html on line 5
- </screen>
- </para>
- <para>
- The above parse error is a result of the fact that the
- <literal>return</literal> statement is enclosed in a non-function
- block within <filename>test.php</filename>. When the return is
- moved outside of the block, the output is:
- <screen>
-Before the return
-27Back in main.html
- </screen>
- </para>
- <para>
- The spurious '27' is due to the fact that PHP 3 does not support
- <literal>return</literal>ing values from files like that.
- </para>
- </example>
- <simpara>
- When a file is <function>include</function>ed, the code it
- contains inherits the variable scope of the line on which the
- <function>include</function> occurs. Any variables available at
- that line in the calling file will be available within the called
- file. If the <function>include</function> occurs inside a
- function within the calling file, then all of the code contained
- in the called file will behave as though it had been defined
- inside that function.
- </simpara>
- <para>
- If the <function>include</function>ed file is called via HTTP
- using the fopen wrappers, and if the target server interprets the
- target file as PHP code, variables may be passed to the
- <function>include</function>ed file using an URL request string as
- used with HTTP GET. This is not strictly speaking the same thing
- as <function>include</function>ing the file and having it inherit
- the parent file's variable scope; the script is actually being run
- on the remote server and the result is then being included into
- the local script.
- <informalexample>
- <programlisting role="php">
-<![CDATA[
-/* This example assumes that someserver is configured to parse .php
- * files and not .txt files. Also, 'works' here means that the variables
- * $varone and $vartwo are available within the include()ed file. */
-
-/* Won't work; file.txt wasn't handled by someserver. */
-include ("http://someserver/file.txt?varone=1vartwo=2");
-
-/* Won't work; looks for a file named 'file.php?varone=1&vartwo=2'
- * on the local filesystem. */
-include ("file.php?varone=1&vartwo=2");
-
-/* Works. */
-include ("http://someserver/file.php?varone=1&vartwo=2");
-
-$varone = 1;
-$vartwo = 2;
-include ("file.txt"); /* Works. */
-include ("file.php"); /* Works. */
+$foo = include 'return.php';
+
+echo $foo; // prints 'PHP'
+
+$bar = include 'noreturn.php';
+
+echo $bar; // prints 1
+
+?>
]]>
- </programlisting>
- </informalexample>
+ </programlisting>
+ </example>
</para>
<simpara>
+ <literal>$bar</literal> is the value (1) because the include was successful.
+ Notice the difference between the above examples. The first uses
+ <function>return</function> within the included file while the other does not.
+ A few other ways to "include" files into variables are with
+ <function>fopen</function>, <function>file</function> or by using
+ <function>include</function> along with
+ <link linkend="ref.outcontrol">Output Control Functions</link>.
+ </simpara>
+
+ <simpara>
See also <function>require</function>, <function>require_once</function>,
<function>include_once</function>, <function>readfile</function>,
- and <function>virtual</function>.
+ <function>virtual</function>, and
+ <link linkend="ini.include-path">include_path</link>.
</simpara>
- </sect1>
- <sect1 id="function.require-once">
+</sect1>
+
+ <sect1 id="function.require-once">
<title><function>require_once</function></title>
<para>
- The <function>require_once</function> statement replaces
- itself with the specified file, much like the C preprocessor's
- <literal>#include</literal> works, and in that respect is
- similar to the <function>require</function> statement. The main
- difference is that in an inclusion chain, the use of
- <function>require_once</function> will assure that the code is
- added to your script only once, and avoid clashes with variable
- values or function names that can happen.
- </para>
- <para>
- For example, if you create the following 2 include files
- <literal>utils.php</literal> and <literal>foolib.php</literal>
- <example>
- <title>utils.php</title>
- <programlisting role="php">
-<![CDATA[
-<?php
-define("PHPVERSION", floor(phpversion()));
-echo "GLOBALS ARE NICE\n";
-function goodTea()
-{
- return "Oolong tea tastes good!";
-}
-?>
-]]>
- </programlisting>
- </example>
- <example>
- <title>foolib.php</title>
- <programlisting role="php">
-<![CDATA[
-<?php
-require ("utils.php");
-function showVar($var)
-{
- if (PHPVERSION == 4) {
- print_r($var);
- } else {
- var_dump($var);
- }
-}
-
-// bunch of other functions ...
-?>
-]]>
- </programlisting>
- </example>
- And then you write a script <literal>cause_error_require.php</literal>
- <example>
- <title>cause_error_require.php</title>
- <programlisting role="php">
-<![CDATA[
-<?php
-require("foolib.php");
-/* the following will generate an error */
-require("utils.php");
-$foo = array("1",array("complex","quaternion"));
-echo "this is requiring utils.php again which is also\n";
-echo "required in foolib.php\n";
-echo "Running goodTea: ".goodTea()."\n";
-echo "Printing foo: \n";
-showVar($foo);
-?>
-]]>
- </programlisting>
- </example>
- When you try running the latter one, the resulting ouptut will be (using
- PHP 4.01pl2):
- <informalexample>
- <screen>
-<![CDATA[
-GLOBALS ARE NICE
-GLOBALS ARE NICE
-
-Fatal error: Cannot redeclare goodTea() in utils.php on line 5
-]]>
- </screen>
- </informalexample>
- By modifying <literal>foolib.php</literal> and
- <literal>cause_errror_require.php</literal>
- to use <function>require_once</function>
- instead of <function>require</function> and renaming the
- last one to <literal>avoid_error_require_once.php</literal>, we have:
- <example>
- <title>foolib.php (fixed)</title>
- <programlisting role="php">
-<![CDATA[
-...
-require_once("utils.php");
-function showVar($var)
-{
-...
-]]>
- </programlisting>
- </example>
- <example>
- <title>avoid_error_require_once.php</title>
- <programlisting role="php">
-<![CDATA[
-...
-require_once("foolib.php");
-require_once("utils.php");
-$foo = array("1",array("complex","quaternion"));
-...
-]]>
- </programlisting>
- </example>
- And when running the latter, the output will be (using PHP 4.0.1pl2):
- <informalexample>
- <screen>
-<![CDATA[
-GLOBALS ARE NICE
-this is requiring globals.php again which is also
-required in foolib.php
-Running goodTea: Oolong tea tastes good!
-Printing foo:
-Array
-(
- [0] => 1
- [1] => Array
- (
- [0] => complex
- [1] => quaternion
- )
-
-)
-]]>
- </screen>
- </informalexample>
+ The <function>require_once</function> statement includes and evaluates
+ the specified file during the execution of the script.
+ This is a behavior similar to the <function>require</function> statement,
+ with the only difference being that if the code from a file has already
+ been included, it will not be included again. See the documentation for
+ <function>require</function> for more information on how this statement
+ works.
</para>
<para>
- Also note that, analogous to the behavior of the
- <literal>#include</literal> of the C preprocessor, this statement
- acts at "compile time", e.g. when the script is parsed and before it
- is executed, and should not be used for parts of the script that need
- to be inserted dynamically during its execution. You should use
- <function>include_once</function> or <function>include</function>
- for that purpose.
+ <function>require_once</function> should be used in cases where
+ the same file might be included and evaluated more than once during a
+ particular execution of a script, and you want to be sure that it is
+ included exactly once to avoid problems with function redefinitions,
+ variable value reassignments, etc.
</para>
<para>
- For more examples on using <function>require_once</function> and
- <function>include_once</function>, look at the PEAR code included in
- the latest PHP source code distributions.
+ For examples on using <function>require_once</function> and
+ <function>include_once</function>, look at the
+ <ulink url="&url.php.pear;">PEAR</ulink> code included in the
+ latest PHP source code distributions.
</para>
+ <note>
+ <para>
+ <function>require_once</function> was added in PHP 4.0.1pl2
+ </para>
+ </note>
<para>
See also: <function>require</function>,
<function>include</function>, <function>include_once</function>,
@@ -1522,18 +1363,18 @@
</para>
</sect1>
- <sect1 id="function.include-once">
+ <sect1 id="function.include-once">
<title><function>include_once</function></title>
<para>
The <function>include_once</function> statement includes and evaluates
the specified file during the execution of the script.
This is a behavior similar to the <function>include</function> statement,
- with the important difference that if the code from a file has already
- been included, it will not be included again.
+ with the only difference being that if the code from a file has already
+ been included, it will not be included again. As the name suggests,
+ it will be included just once.
</para>
<para>
- As mentioned in the <function>require_once</function> description, the
- <function>include_once</function> should be used in the cases in which
+ <function>include_once</function> should be used in cases where
the same file might be included and evaluated more than once during a
particular execution of a script, and you want to be sure that it is
included exactly once to avoid problems with function redefinitions,
@@ -1541,15 +1382,18 @@
</para>
<para>
For more examples on using <function>require_once</function> and
- <function>include_once</function>, look at the PEAR code included in
- the latest PHP source code distributions.
+ <function>include_once</function>, look at the
+ <ulink url="&url.php.pear;">PEAR</ulink> code included in the latest
+ PHP source code distributions.
</para>
- <para>
+ <note>
+ <para>
<function>include_once</function> was added in PHP 4.0.1pl2
- </para>
+ </para>
+ </note>
<para>
- See also: <function>require</function>,
- <function>include</function>, <function>require_once</function>,
+ See also <function>include</function>,
+ <function>require</function>, <function>require_once</function>,
<function>get_required_files</function>,
<function>get_included_files</function>, <function>readfile</function>,
and <function>virtual</function>.