PHP로 다음 작업을 수행 할 수 있습니까?변수가있는 메소드를 호출 할 수 있습니까?
$lstrClassName = 'Class';
$lstrMethodName = 'function';
$laParameters = array('foo' => 1, 'bar' => 2);
$this->$lstrClassName->$lstrMethodName($laParameters);
내가 지금 사용하고이 솔루션은, 그래서 같은 평가와 함께() 함수를 호출하는 것입니다 :이 문제를 해결하기 위해 BETER 방법이 있는지 궁금 해요
eval('$this->'.$lstrClassName.'->'.$lstrMethodName.'($laParameters);');
.
감사합니다.
일반적으로 당신이 이것에 의지해야 할 때 당신은 뭔가 잘못하고 있습니다. 무엇을 성취하려고합니까? – NullUserException
같은 클래스에서 다른 메서드를 호출하는 대신 동일한 메서드 이름을 가진 다른 클래스로 개체를 재구성해야합니다. 그런 다음 메서드 이름이 아닌 객체를 전달할 수 있습니다. – rjmunro
'eval()'이 좋은 방법이 아니라는 것을 잘 인식하고 있습니다. 왜 당신이 그것을 사용해야하는지 정확히 알지 못한다면 거의 확실하게 * eval()을 사용하지 않아야한다. * 그리고 * 더 나은 대안을 배제한 것이다. 그러나 더 좋은 대안이 너무 많습니다 ... 그래서 당신은 아마 문자열'eval()'을 사용해서는 안됩니다. – dreftymac