Люди ,
У меня есть библиотека математического парсера, однако она содержит простую ошибку. В классе есть несколько методов, и есть такой вызов:
class Mathparser_NParamNode extends Mathparser_Node {
public $nodes; //array of nodes (these are the parameters).
public $fPtr; //function to execute
public function __construct($n, $FuncAddr) {
$this->nodes = &$n;
$this->fPtr = $FuncAddr;
}
public function getValue() {
if($this->fPtr->Name=='IF'){
//special case for short circuit boolean logic.
//helps to avoid div by zero etc.
//assume there are 3 parameters:
$cond = $this->nodes[0]->getValue();
if($cond==0){ //false:
return $this->nodes[2]->getValue();
}else{
return $this->nodes[1]->getValue();
}
}else{
$p = array();
$count = count($this->nodes);
for($i=0; $i<$count; $i++){
$p[]=$this->nodes[$i]->getValue();
}
print_r($this->fPtr->EventHandler);
return call_user_func_array($this->fPtr->EventHandler, $p);
}
}
Когда этот метод вызывает магические методы класса, функция работает, когда я вызываю такую функцию
function mp_div_(){
$p = func_get_args();
$s='';
foreach($p as $val){
$s.=$val;
}
return $s;
Получить эту ошибку ::
call_user_func_array () ожидает, что параметр 1 будет допустимым обратным вызовом, функция ‘mp_div_’ не найдена или недопустимое имя функции,
как я могу вызвать эту функцию? магические методы, созданные классом, работают
Задача ещё не решена.
Других решений пока нет …