?php
/
/
redefine
the
user
error
constants
-
PHP
4
only
define
(
FATAL,E_USER_ERROR)
;
define
(ERROR,E_USER_WARNING)
;
define
(WARNING,E_USER_NOTICE)
;
/
/
set
the
error
reporting
level
for
this
script
error_reporting
(FATAL
|
ERROR
|
WARNING)
;
/
/
error
handler
function
function
myErrorHandler
($errno
,
$errstr
,
$errfile
,
$errline
)
{
switch
($errno
)
{
case
FATAL
:
echo
"
b
FATAL
/
b
[$errno
]
$errstr
br
\n"
;
echo
"
Fatal
error
in
line
".$errline
.
"
of
file
".$errfile
;
echo
"
,
PHP
".PHP_VERSION
.
"
(".PHP_OS
."
)
br
\n"
;
echo
"Aborting..
.
br
\n"
;
exit
1
;
break
;
case
ERROR
:
echo
"
b
ERROR
/
b
[$errno
]
$errstr
br
\n"
;
break
;
case
WARNING
:
echo
"
b
WARNING
/
b
[$errno
]
$errstr
br
\n"
;
break
;
default
:
echo
"Unkown
error
type
:
[$errno
]
$errstr
br
\n"
;
break
;
}
}
/
/
function
to
test
the
error
handling
function
scale_by_log
($vect
,
$scale
)
{
if
(
!is_numeric($scale
)
|
|
$scale
=
0
)
trigger_error("log(x
)
for
x
=
0
is
undefined
,
you
used
:
scale
=
$scale"
,
FATAL)
;
if
(!is_array($vect)
)
{
trigger_error("Incorrect
input
vector
,
array
of
values
expected"
,
ERROR)
;
return
null
;
}
for
($i=0
;
$i
count($vect)
;
$i++
)
{
if
(!is_numeric($vect[$i])
)
trigger_error("Value
at
position
$i
is
not
a
number
,
using
0
(zero)"
,
WARNING)
;
$temp[$i
]
=
log($scale
)
*
$vect[$i]
;
}
return
$temp
;
}
/
/
set
to
the
user
defined
error
handler
$old_error_handler
=
set_error_handler("myErrorHandler")
;
/
/
trigger
some
errors
,
first
define
a
mixed
array
with
a
non-numeric
item
echo
"vector
a\n"
;
$a
=
array(2,3
,"foo",5.5,43.3,21.11)
;
print_r($a)
;
/
/
now
generate
second
array
,
generating
a
warning
echo
"----\nvector
b
-
a
warning
(b
=
log(PI
)
*
a)\n"
;
$b
=
scale_by_log($a
,
M_PI)
;
print_r($b)
;
/
/
this
is
trouble
,
we
pass
a
string
instead
of
an
array
echo
"----\nvector
c
-
an
error\n"
;
$c
=
scale_by_log("not
array",2.3)
;
var_dump($c)
;
/
/
this
is
a
critical
error
,
log
of
zero
or
negative
number
is
undefined
echo
"----\nvector
d
-
fatal
error\n"
;
$d
=
scale_by_log($a
,
-2.5)
;
?
|