2014-01-23 2 views
0

속성 값을 기반으로 호출하는 메서드 목록이 많습니다. 내가하는 일을하는 데 더 정확한 방법이 있는지 궁금 해서요? 지금속성 값을 기반으로 메서드 호출

내 코드 :

if ($qvalue->fid == 1) { $this->Archive1(); } 
if ($qvalue->fid == 2) { $this->Archive2(); } 
if ($qvalue->fid == 3) { $this->Archive3(); } 
if ($qvalue->fid == 4) { $this->Archive4(); } 
if ($qvalue->fid == 5) { $this->Archive5(); } 
if ($qvalue->fid == 6) { $this->Archive6(); } 
if ($qvalue->fid == 7) { $this->Archive7(); } 
if ($qvalue->fid == 8) { $this->Archive8(); } 
if ($qvalue->fid == 9) { $this->Archive9(); } 
if ($qvalue->fid == 10) { $this->Archive10(); } 
... 

내가 같은 것을 할 수 있습니다 :

$this->Archive($qvalue->fid)(); 

내가이 늘 일을 알고, 난 그냥 뭔가 더 나은 가능한 경우 모르겠습니다. 비슷한 내용의 다른 게시물을 보려면 무엇을 검색 할지도 모릅니다.

+0

'Archive9(), Archive10()'에 따라 달라집니다. – codingbiz

+0

Archive9() 메소드를 호출/실행하는 더 좋은 방법이 있는지 궁금합니다. 그 안에 무엇이 있는지는 중요하지 않습니다. – ATLChris

+0

중요한 것은 같은 일을하는 (아마도 * 다른 데이터 일 것임) 많은 기능을 가진 것은 깨진 디자인이라는 것입니다. 저주받을만한 가치가 있지 않습니다. 차이점이 데이터라면, '$ item1','$ item2','$ item3' ...이 실제로 배열이어야하는 것과 같은 이유로 하나의 메소드 여야합니다. (각 함수에 매개 변수를 전달하는 것을 싫어하면'$ qvalue-> fid'의 값으로 색인 된 연관 배열의 배열에 저장할 수 있습니다.) 기능이 다른 경우 다른 함수 문제. (그러나 당신의 * 이름 *이 깨 졌음을 의미합니다.) – cHao

답변

1
$method = 'Archive' . $qvalue->fid; 
if (method_exists($this, $method)) 
{ 
    $this->$method(); 
} 
+0

난 그냥 몇 가지 테스트를 실행하고 이것은 잘 작동합니다. 고맙습니다! – ATLChris

관련 문제