mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-16 08:58:56 +00:00
Added entities pointing to errorfunc.xml in manual.xml.in and en/chapters.ent
Added user errors to the list of errors and an example in en/features/error-handling.xml git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@32183 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
parent
61d5264048
commit
4656d5f8f6
2 changed files with 123 additions and 5 deletions
|
@ -45,6 +45,7 @@
|
|||
<!ENTITY reference.dir SYSTEM "functions/dir.xml">
|
||||
<!-- ENTITY reference.dl SYSTEM "functions/dl.xml" -->
|
||||
<!ENTITY reference.domxml SYSTEM "functions/domxml.xml">
|
||||
<!ENTITY reference.errorfunc SYSTEM "functions/errorfunc.xml">
|
||||
<!ENTITY reference.exec SYSTEM "functions/exec.xml">
|
||||
<!ENTITY reference.fdf SYSTEM "functions/fdf.xml">
|
||||
<!ENTITY reference.filepro SYSTEM "functions/filepro.xml">
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry>8</entry>
|
||||
<entry>E_NOTICE </entry>
|
||||
<entry>E_NOTICE </entry>
|
||||
<entry>
|
||||
run-time notices (less serious than warnings)
|
||||
</entry>
|
||||
|
@ -52,8 +52,8 @@
|
|||
<entry>32</entry>
|
||||
<entry>E_CORE_WARNING</entry>
|
||||
<entry>
|
||||
warnings (non fatal errors) that occur during PHP's initial
|
||||
startup
|
||||
warnings (non fatal errors) that occur during PHP's initial
|
||||
startup
|
||||
</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
|
@ -83,7 +83,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<entry>1024</entry>
|
||||
<entry>E_USER_NOTICE </entry>
|
||||
<entry>E_USER_NOTICE </entry>
|
||||
<entry>user-generated notice message</entry>
|
||||
<entry>PHP 4 only</entry>
|
||||
</row>
|
||||
|
@ -138,7 +138,7 @@
|
|||
or where to look for the problem.
|
||||
</para>
|
||||
</warning>
|
||||
|
||||
|
||||
<para>
|
||||
All <link linkend="language.expressions">PHP expressions</link> can
|
||||
also be called with the "@" prefix, which turns off error reporting
|
||||
|
@ -162,8 +162,125 @@
|
|||
</para>
|
||||
</warning>
|
||||
|
||||
<para>
|
||||
Below we can see an example of using the error handling capabilities in
|
||||
PHP. We define a error handling function which logs the information into
|
||||
a file (using an XML format), and e-mails the developer in case a critical
|
||||
error in the logic happens.
|
||||
<example>
|
||||
<title>Using error handling in a script</title>
|
||||
<programlisting role="php">
|
||||
<?php
|
||||
// we will do our own error handling
|
||||
error_reporting(0);
|
||||
|
||||
// user defined error handling function
|
||||
function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) {
|
||||
// timestamp for the error entry
|
||||
$dt = date("Y-m-d H:i:s (T)");
|
||||
|
||||
// define an assoc array of error string
|
||||
// in reality the only entries we should
|
||||
// consider are 2,8,256,512 and 1024
|
||||
$errortype = array (
|
||||
1 => "Error",
|
||||
2 => "Warning",
|
||||
4 => "Parsing Error",
|
||||
8 => "Notice",
|
||||
16 => "Core Error",
|
||||
32 => "Core Warning",
|
||||
64 => "Compile Error",
|
||||
128 => "Compile Warning",
|
||||
256 => "User Error",
|
||||
512 => "User Warning",
|
||||
1024=> "User Notice"
|
||||
);
|
||||
// set of errors for which a var trace will be saved
|
||||
$user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
|
||||
|
||||
$err = "<errorentry>\n";
|
||||
$err .= "\t<datetime>".$dt."</datetime>\n";
|
||||
$err .= "\t<errornum>".$errno."</errnumber>\n";
|
||||
$err .= "\t<errortype>".$errortype[$errno]."</errortype>\n";
|
||||
$err .= "\t<errormsg>".$errmsg."</errormsg>\n";
|
||||
$err .= "\t<scriptname>".$filename."</scriptname>\n";
|
||||
$err .= "\t<scriptlinenum>".$linenum."</scriptlinenum>\n";
|
||||
|
||||
if (in_array($errno, $user_errors))
|
||||
$err .= "\t<vartrace>".wddx_serialize_value($vars,"Variables")."</vartrace>\n";
|
||||
$err .= "</errorentry>\n\n";
|
||||
|
||||
// for testing
|
||||
echo $err;
|
||||
|
||||
// save to the error log, and e-mail me if there is a critical user error
|
||||
/*
|
||||
error_log($err, 3, "/usr/local/php4/error.log");
|
||||
if ($errno == E_USER_ERROR)
|
||||
mail("phpdev@mydomain.com","Critical User Error",$err);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
function distance ($vect1, $vect2) {
|
||||
if (!is_array($vect1) || !is_array($vect2)) {
|
||||
trigger_error("Incorrect parameters, arrays expected", E_USER_ERROR);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (count($vect1) != count($vect2)) {
|
||||
trigger_error("Vectors need to be of the same size", E_USER_ERROR);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for ($i=0; $i<count($vect1); $i++) {
|
||||
$c1 = $vect1[$i]; $c2 = $vect2[$i];
|
||||
$d = 0.0;
|
||||
if (!is_numeric($c1)) {
|
||||
trigger_error("Coordinate $i in vector 1 is not a number, using zero",
|
||||
E_USER_WARNING);
|
||||
$c1 = 0.0;
|
||||
}
|
||||
if (!is_numeric($c2)) {
|
||||
trigger_error("Coordinate $i in vector 2 is not a number, using zero",
|
||||
E_USER_WARNING);
|
||||
$c2 = 0.0;
|
||||
}
|
||||
$d += $c2*$c2 - $c1*$c1;
|
||||
}
|
||||
return sqrt($d);
|
||||
}
|
||||
|
||||
$old_error_handler = set_error_handler("userErrorHandler");
|
||||
|
||||
// undefined constant, generates a warning
|
||||
$t = I_AM_NOT_DEFINED;
|
||||
|
||||
// define some "vectors"
|
||||
$a = array(2,3,"foo");
|
||||
$b = array(5.5, 4.3, -1.6);
|
||||
$c = array (1,-3);
|
||||
|
||||
// generate a user error
|
||||
$t1 = distance($c,$b)."\n";
|
||||
|
||||
// generate another user error
|
||||
$t2 = distance($b,"i am not an array")."\n";
|
||||
|
||||
// generate a warning
|
||||
$t3 = distance($a,$b)."\n";
|
||||
|
||||
?>
|
||||
</programlisting>
|
||||
</example>
|
||||
This is just a simple example showing how to use the
|
||||
<link linkend="ref.errorfunc">Error Handling and Logging
|
||||
functions</link>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
See also <function>error_reporting</function>,
|
||||
<function>error_log</function>,
|
||||
<function>set_error_handler</function>,
|
||||
<function>restore_error_handler</function>,
|
||||
<function>trigger_error</function>,
|
||||
|
|
Loading…
Reference in a new issue