?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
.
"
/
errornum
\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@example.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"
;
?
|