<?php
class sM
{
static private $_methods = array();
static public function addMethod($name, Closure $cb)
{
self::$_methods[$name] = $cb;
}
public function __call($name, array $args)
{
array_unshift($args, $this);
return call_user_func_array(self::$_methods[$name], $args);
}
public function add($a, $b)
{
return $a + $b;
}
}
foreach(array(10) as $base) {
sM::addMethod('add'.$base, function($self, $number) use ($base) {
return $self->add($number, $base);
});
}
$sM = new sM();
echo $sM->add10(1)."\n";
echo $sM->add100(1)."\n";
foreach(array(100) as $base) {
sM::addMethod('add'.$base, function($self, $number) use ($base) {
return $self->add($number, $base);
});
}
echo $sM->add100(1)."\n";
echo $sM->add1000(1)."\n";
preferences:
68.48 ms | 402 KiB | 5 Q