uses more complex call to spl_autoload_register