2012-11-12 5 views
-2

변수에 함수 이름을 할당하고 동적으로 호출하는 프로그램을 PHP로 작성했습니다. 아래에 코드가 있습니다. 추가 할 코드를 실행하면 모든 답변이 표시됩니다.동적으로 PHP를 호출하는 함수

function multiply($val1, $val2) 
{ 
    $mul = $val1 * $val2; 
    echo $mul; 
} 

function divide($val1, $val2) 
{ 
    $div = $val1/$val2; 
    echo $div; 
} 

$func = plus($_POST['val1'], $_POST['val2']); 
$func = minus($_POST['val1'],$_POST['val2']); 
$func = multiply($_POST['val1'],$_POST['val2']); 
$func = divide($_POST['val1'],$_POST['val2']); 

+0

변수가 무효화되면 변수에 할당하는 이유는 무엇입니까? – Leri

+0

여기에 질문이 잘 표시되지 않습니다. 나는 op가 원하는 것은 wordpress가 어디에서 함수 이름이 param으로 전달되는지와 같은 몇가지 후크라고 생각한다. 예. 'add_action ('init', 'enque_my_scripts');''enque_my_script'는 함수입니다. – SachinGutte

답변

0

제안 된 코드를 사용하면 4 개의 변수를 동적으로 호출하지 않고 대신 4 개의 함수 plus, minus, multiply 및 divide를 호출합니다. 그 functins는 당신이 수행하도록 구현 한 것처럼 출력을 생성했습니다. $func은 항상 그 함수의 반환 값으로 대체됩니다. 당신이 정말로 동적 기능을 사용하는 경우

대신 이런 식으로 뭔가를 시도해야 호출 생산을 위해 당신이 정말로 후 변수 값의 유효성을 검증해야

call_user_func($_POST['operation'],$_POST['val1'],$_POST['val2']); 

참고.

0

가변 기능 here을 사용하는 방법을 살펴보고 시도한 전체 코드를 확인하십시오.

어쩌면 당신은`다시는 이런 식으로 뭔가를 시도 : 또한 closure로 기능을 구현하고 폐쇄 주위에 전달할 수

function add($one, $two) 
{ 
    return $one + $two; 
} 

$funcname = "foo"; 
echo $funcname(1, 4); 
0

. 함수를 돌아 다니는 것이 원하는 것입니다.

$divide = function($val1, $val2) { 
    $div = $val1/$val2; 
    echo $div; 
}; 

$divide($_POST['val1'], $_POST['val2']); 
other_function($divide, $param, $otherParam); // you could use the closure $divide inside this function. 

하지만 사용자 입력을 이스케이프 처리하여 스크립트에 사용하는 것을 잊지 마십시오.

0

귀하의 필요에 맞게 시도해 볼 수 있습니다.

function user_selection($operation,$op1,$op2){ 
    switch ($operation){ 
    case '+': 
     return $op1 + $op2; 
     break; 
    case '-': 
     return $op1 - $op2; 
     break; 
    case '*': 
     return $op1 * $op2; 
     break;   
    case '/': 
     return $op1/$op2; 
     break; 
    } 

}

과 기능 이상 전화, 당신은

$functionName = 'user_selection'; 
    echo $functionName('+',1,2); 

당신은이 일의 작업 php manual for variable functions을 어떻게 보는가 더 나은 이해를 위해 인수, 운영 등 등을 변경하여 다른 작업을 수행 할 수 있습니다 넣을 수 있습니다

관련 문제