david           Sat Jun 22 23:03:38 2002 EDT

  Modified files:              
    /phpdoc/en/language variables.xml 
  Log:
  notes about static initializers
  
  
Index: phpdoc/en/language/variables.xml
diff -u phpdoc/en/language/variables.xml:1.49 phpdoc/en/language/variables.xml:1.50
--- phpdoc/en/language/variables.xml:1.49       Sun Jun 16 03:11:01 2002
+++ phpdoc/en/language/variables.xml    Sat Jun 22 23:03:36 2002
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.49 $ -->
+<!-- $Revision: 1.50 $ -->
  <chapter id="language.variables">
   <title>Variables</title>
   
@@ -454,6 +454,54 @@
         Test ();
     }
     $count--;
+}
+]]>
+    </programlisting>
+   </informalexample>
+
+   <simpara>
+    Static initializers are evaluated when a function is defined, not
+    when it is executed. Thus you cannot make reference to any other
+    variables or initialize a static variable with the result of a
+    function call. The following example suggests a way around this:
+   </simpara>
+
+   <informalexample>
+    <programlisting role="php">
+<![CDATA[
+function Test()
+{
+    static $magic_quotes_initialized = false;
+    static $magic_quotes;
+    if (!$magic_quotes_initialized) {
+        $magic_quotes = get_magic_quotes_gpc();
+        $magic_quotes_initialized = true;
+    }
+
+    // function body
+}
+]]>
+    </programlisting>
+   </informalexample>
+
+   <simpara>
+    If the function you are calling has predictable return values, for
+    example, if it can never return <literal>null</literal>, this
+    can be further simplified (note the use of the identity operator
+    <literal>===</literal>):
+   </simpara>
+
+   <informalexample>
+    <programlisting role="php">
+<![CDATA[
+function Test()
+{
+    static $magic_quotes = null;
+    if ($magic_quotes === null) {
+        $magic_quotes = get_magic_quotes_gpc();
+    }
+
+    // function body
 }
 ]]>
     </programlisting>


Reply via email to