<?php /** * Helper class to wrap an object with a modified interface created by * a partial application of its existing methods. * * @category Services * @package Services_Twilio * @author Neuman Vong <neuman@twilio.com> * @license http://creativecommons.org/licenses/MIT/ MIT * @link http://pear.php.net/package/Services_Twilio */ class Services_Twilio_PartialApplicationHelper { private $callbacks; public function __construct() { $this->callbacks = array(); } public function set($method, $callback, array $args) { if (!is_callable($callback)) { return FALSE; } $this->callbacks[$method] = array($callback, $args); } public function __call($method, $args) { if (!isset($this->callbacks[$method])) { throw new Exception("Method not found: $method"); } list($callback, $cb_args) = $this->callbacks[$method]; return call_user_func_array( $callback, array_merge($cb_args, $args) ); } }