vrana           Mon Jul 26 11:55:09 2004 EDT

  Modified files:              
    /phpdoc/en/language references.xml 
  Log:
  Referencing global variables inside function (bug #14645)
  
http://cvs.php.net/diff.php/phpdoc/en/language/references.xml?r1=1.28&r2=1.29&ty=u
Index: phpdoc/en/language/references.xml
diff -u phpdoc/en/language/references.xml:1.28 phpdoc/en/language/references.xml:1.29
--- phpdoc/en/language/references.xml:1.28      Mon Jul 26 11:16:26 2004
+++ phpdoc/en/language/references.xml   Mon Jul 26 11:55:09 2004
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.28 $ -->
+<!-- $Revision: 1.29 $ -->
  <chapter id="language.references">
   <title>References Explained</title>
 
@@ -81,6 +81,39 @@
       Engine and will therefore result in a parser error.
      </para>
    </note>
+   <warning>
+    <para>
+     If you assign reference to a variable stated as <literal>global</literal>
+     inside function, the reference will be visible only inside the function.
+     You can avoid it by using <varname>$GLOBALS</varname> array.
+     <example>
+      <title>Referencing global variables inside function</title>
+      <programlisting role="php">
+<![CDATA[
+<?php
+$var1 = "Example variable";
+$var2 = "";
+
+function global_references($use_globals)
+{
+    global $var1, $var2;
+    if (!$use_globals) {
+        $var1 =& $var2; // visible only inside the function
+    } else {
+        $GLOBALS["var1"] =& $var2; // visible also in global context
+    }
+}
+
+global_references(false);
+echo "var2 is set to '$var2'\n"; // var2 is set to ''
+global_references(true);
+echo "var2 is set to '$var2'\n"; // var2 is set to 'Example variable'
+?>
+]]>
+      </programlisting>
+     </example>
+    </para>
+   </warning>
    <para>
     The second thing references do is to pass variables
     by-reference. This is done by making a local variable in a function and

Reply via email to