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
-->