mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-15 03:12:41 +01:00
42 lines
1 KiB
PHP
42 lines
1 KiB
PHP
|
<?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)
|
||
|
);
|
||
|
}
|
||
|
}
|