<?
class BasicMath
{
    public static function 
Add()
    {
        
$ol = new Overloader(func_get_args());
        
        if(
$args $ol->match(
            array(
"first"  => Overloader::ARG_FLOAT,
                  
"second" => Overloader::ARG_FLOAT)
        )){
            return 
$args->first $args->second;
        }
        
        elseif(
$args $ol->match(
            array(
"first"  => Overloader::ARG_STRING,
                  
"second" => Overloader::ARG_STRING)
        )){
            return 
$args->first $args->second;
        }
        
        else
        {
            
$ol->error();
        }
    }
}

echo 
BasicMath::Add(1.0,2.0) . "\n";
echo 
BasicMath::Add("Austin"," Smith") . "\n";

try { echo 
BasicMath::Add(1.0,"Austin") . "\n"; }
catch(
Exception $e) { die("Bad Programmer!\n"); }
?>