vrana Tue Nov 1 09:37:01 2005 EDT
Modified files:
/phpdoc/en/language variables.xml
Log:
Uninitialized variables
http://cvs.php.net/diff.php/phpdoc/en/language/variables.xml?r1=1.88&r2=1.89&ty=u
Index: phpdoc/en/language/variables.xml
diff -u phpdoc/en/language/variables.xml:1.88
phpdoc/en/language/variables.xml:1.89
--- phpdoc/en/language/variables.xml:1.88 Mon Oct 31 10:04:12 2005
+++ phpdoc/en/language/variables.xml Tue Nov 1 09:37:00 2005
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.88 $ -->
+<!-- $Revision: 1.89 $ -->
<chapter id="language.variables">
<title>Variables</title>
@@ -109,6 +109,38 @@
</programlisting>
</informalexample>
</para>
+
+ <para>
+ It is not necessary to initialize variables in PHP however it is a very
+ good practice. Uninitialized variables have a default value of their type
+ - &false;, zero, empty string or an empty array.
+ </para>
+ <para>
+ <example>
+ <title>Default values of uninitialized variables</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+echo ($unset_bool ? "true" : "false"); // false
+$unset_int += 25; // 0 + 25 => 25
+echo $unset_string . "abc"; // "" . "abc" => "abc"
+$unset_array[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ <para>
+ Relying on the default value of an uninitialized variable is problematic
+ in the case of including one file into another which uses the same
+ variable name. It is also a major <link
+ linkend="security.globals">security risk</link> with <link
+ linkend="ini.register-globals">register_globals</link> turned on. <link
+ linkend="e-notice">E_NOTICE</link> level error is issued in case of
+ working with uninitialized variables, however not in the case of appanding
+ elements to the uninitialized array. <function>isset</function> language
+ construct can be used to detect if a variable has been already initialized.
+ </para>
</sect1>
<sect1 id="language.variables.predefined">