Large frameworks often use objects to represent errors.

<?php
class simple {
    function 
getName($id
    {
        if (
$id == 10) {
            return 
"Sterling";
        } else {
            
$err = &new simple_error(-10
                    
"Invalid id given!");
            return 
$err;
        }
    }
}

class 
simple_error {
    var 
$str;
    var 
$number;

    function 
simple_error($number$str
    {
        
$this->str $str;
        
$this->number $number;
    }
}

// start sample code
$s = &new simple;
$name $s->getName(20);
if (
is_object($name)) {
    die (
"An error occured " 
         
"[{$name->number}]: " 
         
"{$name->str}\n");
}
else {
    print 
"Name for ID 20 was found\n";
}
Output