<?php
  class StringFormat {
    protected $format= '';
    
    public function __construct($format) {
      $this->format= $format;
    }
    public function format() {
      $a= func_get_args();
      return vsprintf($this->format, $a);
    }
  }
  
  $arguments= array($argv[0], sizeof($argv[1]));
  $r= new ReflectionMethod('StringFormat', 'format');
  $s= new StringFormat('%s %d');
  
  // call_user_func_array()
  var_dump(call_user_func_array(array($s, 'format'), $arguments));
  
  // invokeArgs()
  var_dump($r->invokeArgs($s, $arguments));
  
  // invoke() with call_user_func_array()
  var_dump(call_user_func_array(array($r, 'invoke'), array_merge(array($s), $arguments)));
?>
