Skip to content

Instantly share code, notes, and snippets.

@lancejchen
Created July 22, 2014 08:20
Show Gist options
  • Save lancejchen/0bdef923ff7b61db95d9 to your computer and use it in GitHub Desktop.
Save lancejchen/0bdef923ff7b61db95d9 to your computer and use it in GitHub Desktop.
test gists
protected function _call($name, $p, $type) {
$ret = null;
if(isset($this->_obj->methods[$name][$type])) {
foreach($this->_obj->methods[$name][$type] as $extend) {
if(is_array($extend) && isset($extend['class'])) {
$obj = $this->_getobj($extend['class'], $this->_obj);
switch (count($p)) {
case 0: $ret = $obj->{$extend['method']}();break;
case 1: $ret = $obj->{$extend['method']}($p[0]);break;
//lance: for executing the methods.
case 2: $ret = $obj->{$extend['method']}($p[0], $p[1]);break;
case 3: $ret = $obj->{$extend['method']}($p[0], $p[1], $p[2]);break;
case 4: $ret = $obj->{$extend['method']}($p[0], $p[1], $p[2], $p[3]);break;
case 5: $ret = $obj->{$extend['method']}($p[0], $p[1], $p[2], $p[3], $p[4]);break;
default: $ret = call_user_func_array(array($obj, $extend['method']), $p);break;
}
} elseif(is_callable($extend, true)) {
if(is_array($extend)) {
list($obj, $method) = $extend;
if(method_exists($obj, $method)) {
if(is_object($obj)) {
$obj->obj = $this->_obj;
switch (count($p)) {
case 0: $ret = $obj->{$method}();break;
case 1: $ret = $obj->{$method}($p[0]);break;
case 2: $ret = $obj->{$method}($p[0], $p[1]);break;
case 3: $ret = $obj->{$method}($p[0], $p[1], $p[2]);break;
case 4: $ret = $obj->{$method}($p[0], $p[1], $p[2], $p[3]);break;
case 5: $ret = $obj->{$method}($p[0], $p[1], $p[2], $p[3], $p[4]);break;
default: $ret = call_user_func_array(array($obj, $method), $p);break;
}
} else {
$p[] = $this;
$ret = call_user_func_array($extend, $p);
}
}/* else {
throw new Exception('Class "'.get_class($extend[0]).'" does not have a method named "'.$extend[1].'".');
}*/
} else {
$p[] = $this->_obj;
$ret = call_user_func_array($extend, $p);
}
}
}
}
return $ret;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment