vrana           Wed Dec 29 07:46:06 2004 EDT

  Added files:                 
    /phpdoc/en/language exceptions.xml 

  Removed files:               
    /phpdoc/en/language/oop5    exceptions.xml 

  Modified files:              
    /phpdoc     manual.xml.in 
    /phpdoc/en/appendices       reserved.xml 
    /phpdoc/en/language oop5.xml 
    /phpdoc/en/language/oop5    basic.xml 
    /phpdoc/en/reference/dom    reference.xml 
    /phpdoc/en/reference/errorfunc/functions    set-exception-handler.xml 
  Log:
  Move exceptions from objects (bug #31250)
  
http://cvs.php.net/diff.php/phpdoc/manual.xml.in?r1=1.200&r2=1.201&ty=u
Index: phpdoc/manual.xml.in
diff -u phpdoc/manual.xml.in:1.200 phpdoc/manual.xml.in:1.201
--- phpdoc/manual.xml.in:1.200  Fri Dec 24 22:14:39 2004
+++ phpdoc/manual.xml.in        Wed Dec 29 07:46:04 2004
@@ -2,7 +2,7 @@
 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
           "@srcdir@/dtds/dbxml-4.1.2/docbookx.dtd" [
 
-<!-- $Revision: 1.200 $ -->
+<!-- $Revision: 1.201 $ -->
 
 <!-- Add translated specific definitions and snippets -->
 <!ENTITY % language-defs     SYSTEM "@srcdir@/@LANGDIR@/language-defs.ent">
@@ -78,6 +78,7 @@
   &language.functions;
   &language.oop;
   &language.oop5;
+  &language.exceptions;
   &language.references;
  </part>
 
http://cvs.php.net/diff.php/phpdoc/en/appendices/reserved.xml?r1=1.53&r2=1.54&ty=u
Index: phpdoc/en/appendices/reserved.xml
diff -u phpdoc/en/appendices/reserved.xml:1.53 
phpdoc/en/appendices/reserved.xml:1.54
--- phpdoc/en/appendices/reserved.xml:1.53      Wed Dec 29 07:06:49 2004
+++ phpdoc/en/appendices/reserved.xml   Wed Dec 29 07:46:05 2004
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.53 $ -->
+<!-- $Revision: 1.54 $ -->
 
  <appendix id="reserved">
   <title>List of Reserved Words</title>
@@ -240,15 +240,15 @@
         <link linkend="language.oop5.cloning">clone</link> (PHP 5)
        </entry>
        <entry>
-        <link linkend="language.oop5.exceptions">try</link> (PHP 5)
+        <link linkend="language.exceptions">try</link> (PHP 5)
        </entry>
        <entry>
-        <link linkend="language.oop5.exceptions">catch</link> (PHP 5)
+        <link linkend="language.exceptions">catch</link> (PHP 5)
        </entry>
       </row>
       <row>
        <entry>
-        <link linkend="language.oop5.exceptions">throw</link> (PHP 5)
+        <link linkend="language.exceptions">throw</link> (PHP 5)
        </entry>
        <entry>
         <link linkend="migration.old-function">cfunction</link> (PHP 4 only)
http://cvs.php.net/diff.php/phpdoc/en/language/oop5.xml?r1=1.9&r2=1.10&ty=u
Index: phpdoc/en/language/oop5.xml
diff -u phpdoc/en/language/oop5.xml:1.9 phpdoc/en/language/oop5.xml:1.10
--- phpdoc/en/language/oop5.xml:1.9     Fri Oct 29 07:28:21 2004
+++ phpdoc/en/language/oop5.xml Wed Dec 29 07:46:06 2004
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.9 $ -->
+<!-- $Revision: 1.10 $ -->
  <chapter id="language.oop5">
   <title>Classes and Objects (PHP 5)</title>
 
@@ -25,7 +25,6 @@
   &language.oop5.patterns;
   &language.oop5.magic;
   &language.oop5.final;
-  &language.oop5.exceptions;
   &language.oop5.cloning;
   &language.oop5.object-comparison;
   &language.oop5.reflection;
http://cvs.php.net/diff.php/phpdoc/en/language/oop5/basic.xml?r1=1.8&r2=1.9&ty=u
Index: phpdoc/en/language/oop5/basic.xml
diff -u phpdoc/en/language/oop5/basic.xml:1.8 
phpdoc/en/language/oop5/basic.xml:1.9
--- phpdoc/en/language/oop5/basic.xml:1.8       Tue Dec 28 09:39:19 2004
+++ phpdoc/en/language/oop5/basic.xml   Wed Dec 29 07:46:06 2004
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.8 $ -->
+<!-- $Revision: 1.9 $ -->
 
  <sect1 id="language.oop5.basic">
   <title>The Basics</title>
@@ -44,7 +44,7 @@
     assigned to a variable.  An object will always be assigned when
     creating a new object unless the object has a
     <link linkend="language.oop5.decon">constructor</link> defined that throws 
an
-    <link linkend="language.oop5.exceptions">exception</link> on error.
+    <link linkend="language.exceptions">exception</link> on error.
    </para>
    <example>
     <title>Creating an instance</title>
http://cvs.php.net/diff.php/phpdoc/en/reference/dom/reference.xml?r1=1.11&r2=1.12&ty=u
Index: phpdoc/en/reference/dom/reference.xml
diff -u phpdoc/en/reference/dom/reference.xml:1.11 
phpdoc/en/reference/dom/reference.xml:1.12
--- phpdoc/en/reference/dom/reference.xml:1.11  Mon Dec 27 11:53:35 2004
+++ phpdoc/en/reference/dom/reference.xml       Wed Dec 29 07:46:06 2004
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.11 $ -->
+<!-- $Revision: 1.12 $ -->
  <reference id="ref.dom">
   <title>DOM Functions</title>
   <titleabbrev>DOM</titleabbrev>
@@ -683,7 +683,7 @@
       when an operation is impossible to perform for logical reasons.
      </para>
      <para>
-      See also <xref linkend="language.oop5.exceptions"/>.
+      See also <xref linkend="language.exceptions"/>.
      </para>
      <section id='dom.class.domexception.properties'>
       &reftitle.properties;
http://cvs.php.net/diff.php/phpdoc/en/reference/errorfunc/functions/set-exception-handler.xml?r1=1.4&r2=1.5&ty=u
Index: phpdoc/en/reference/errorfunc/functions/set-exception-handler.xml
diff -u phpdoc/en/reference/errorfunc/functions/set-exception-handler.xml:1.4 
phpdoc/en/reference/errorfunc/functions/set-exception-handler.xml:1.5
--- phpdoc/en/reference/errorfunc/functions/set-exception-handler.xml:1.4       
Mon Nov  8 07:10:20 2004
+++ phpdoc/en/reference/errorfunc/functions/set-exception-handler.xml   Wed Dec 
29 07:46:06 2004
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.4 $ -->
+<!-- $Revision: 1.5 $ -->
 <refentry id="function.set-exception-handler">
  <refnamediv>
   <refname>set_exception_handler</refname>
@@ -88,7 +88,7 @@
    <function>restore_exception_handler</function>
    <function>restore_error_handler</function>
    <function>error_reporting</function>&listendand;
-   <link linkend="language.oop5.exceptions">PHP 5 Exceptions</link>
+   <link linkend="language.exceptions">PHP 5 Exceptions</link>
   </para>
  </refsect1>
 </refentry>

http://cvs.php.net/co.php/phpdoc/en/language/exceptions.xml?r=1.1&p=1
Index: phpdoc/en/language/exceptions.xml
+++ phpdoc/en/language/exceptions.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.1 $ -->
 <chapter id="language.exceptions">
  <title>Exceptions</title>

  <para>
   PHP 5 has an exception model similar to that of other programming languages.
   An exception can be thrown, try and caught within PHP. A Try block must
   include at least one catch block. Multiple catch blocks can be used to
   catch different classtypes; execution will continue after that last catch
   block defined in sequence. Exceptions can be thrown within catch blocks.
  </para>
  <para>
   When an exception is thrown, code following the statement will not be
   executed and PHP will attempt to find the first matching catch block. If an
   exception is not caught a PHP Fatal Error will be issued with an Uncaught
   Exception message, unless there has been a handler defined with
   <function>set_exception_handler</function>.
  </para>
   <example>
    <title>Throwing an Exception</title>
    <programlisting role="php">
<![CDATA[
<?php
try {
    $error = 'Always throw this error';
    throw new Exception($error);

    // Code following an exception is not executed.
    echo 'Never executed';

} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

// Continue execution
echo 'Hello World';
?>
]]>
    </programlisting>
   </example>

  <sect1 id="language.exceptions.extending">
   <title>Extending Exceptions</title>
   <para>
    A User defined Exception class can be defined by extending the built-in
    Exception class. The members and properties below, show what is accessible
    within the child class that derives from the built-in Exception class.
   </para>
   <example>
    <title>The Built in Exception class</title>
    <programlisting role="php">
<![CDATA[
<?php
class Exception
{
    protected $message = 'Unknown exception';   // exception message
    protected $code = 0;                        // user defined exception code
    protected $file;                            // source filename of exception
    protected $line;                            // source line of exception

    function __construct($message = null, $code = 0);

    final function getMessage();                // message of exception 
    final function getCode();                   // code of exception
    final function getFile();                   // source filename
    final function getLine();                   // source line
    final function getTrace();                  // an array of the backtrace()
    final function getTraceAsString();          // formated string of trace

    /* Overrideable */
    function __toString();                       // formated string for display
}
?>
]]>
    </programlisting>
   </example>
   <para>
    If a class extends the built-in Exception class and re-defines the <link
    linkend="language.oop5.decon">constructor</link>, it is highly recomended
    that it also call <link
    linkend="language.oop5.paamayim-nekudotayim">parent::__construct()</link> 
    to ensure all available data has been properly assigned. The <link
    linkend="language.oop5.magic">__toString()</link> method can be overriden
    to provide a custom output when the object is presented as a string.
   </para>
   <example>
    <title>Extending the Exception class</title>
    <programlisting role="php">
<![CDATA[
<?php
/**
 * Define a custom exception class
 */
class MyException extends Exception
{
    // Redefine the exception so message isn't optional
    public function __construct($message, $code = 0) {
        // some code
    
        // make sure everything is assigned properly
        parent::__construct($message, $code);
    }

    // custom string representation of object */
    public function __toString() {
        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
    }

    public function customFunction() {
        echo "A Custom function for this type of exception\n";
    }
}


/**
 * Create a class to test the exception
 */
class TestException
{
    public $var;

    const THROW_NONE    = 0;
    const THROW_CUSTOM  = 1;
    const THROW_DEFAULT = 2;

    function __construct($avalue = self::THROW_NONE) {

        switch ($avalue) {
            case self::THROW_CUSTOM:
                // throw custom exception
                throw new MyException('1 is an invalid parameter', 5);
                break;

            case self::THROW_DEFAULT:
                // throw default one.
                throw new Exception('2 isnt allowed as a parameter', 6);
                break;

            default: 
                // No exception, object will be created.
                $this->var = $avalue;
                break;
        }
    }
}


// Example 1
try {
    $o = new TestException(TestException::THROW_CUSTOM);
} catch (MyException $e) {      // Will be caught
    echo "Caught my exception\n", $e;
    $e->customFunction();
} catch (Exception $e) {        // Skipped
    echo "Caught Default Exception\n", $e;
}

// Continue execution
var_dump($o);
echo "\n\n";


// Example 2
try {
    $o = new TestException(TestException::THROW_DEFAULT);
} catch (MyException $e) {      // Doesn't match this type
    echo "Caught my exception\n", $e;
    $e->customFunction();
} catch (Exception $e) {        // Will be caught
    echo "Caught Default Exception\n", $e;
}

// Continue execution
var_dump($o);
echo "\n\n";


// Example 3
try {
    $o = new TestException(TestException::THROW_CUSTOM);
} catch (Exception $e) {        // Will be caught
    echo "Default Exception caught\n", $e;
}

// Continue execution
var_dump($o);
echo "\n\n";


// Example 4
try {
    $o = new TestException();
} catch (Exception $e) {        // Skipped, no exception
    echo "Default Exception caught\n", $e;
}

// Continue execution
var_dump($o);
echo "\n\n";
?>
]]>
    </programlisting>
   </example>
  </sect1>

 </chapter>
 
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

Reply via email to