2010-03-07 5 views
0

기본적으로 mysql 쿼리의 결과를 반환하는 메소드가 있습니다.클래스 내 재사용 방법

public function getStuff() { 
$this->sort = "myColumn ASC"; 
$query = ... ORDER BY $this->sort; 
return $data; 
} 

난 단지 다른 정렬 순서로, 그 결과를 다시 사용할 수 있도록, 난 그냥 원래 메소드를 호출하여, 다른 방법으로 데이터를 잡을 수있을 것처럼 보인다. 이처럼 "getStuff()는"예상대로 데이터를 반환하는 동안

public function getMoreStuff() { 
$this->sort = "anotherColumn DESC"; 
$this->getStuff(); 
} 

그러나, "getMoreStuff()는"아무것도 반환하지 않습니다. 필자는 두 번째 방법으로 전체 쿼리를 복사 할 필요는 없지만이를 포함시킬 수있는 방법이 손실되었다고 확신합니다. 모든 지침은 매우 감사하겠습니다. 감사!

답변

1

커플 문제 :

이 getMoreStuff()는 일종의 getMoreStuff (에서 getStuff()는 $ this->을 호출
  1. ) 인 오입니다 verwritten 은 getStuff()의 정렬 순서로 나타냅니다. getStuff()에 기본값 을 지정하고 getStuff($sort = "myColumn ASC")을 사용하여 정렬 한 다음 필요한 경우 getStuff()에 다른 정렬 순서를 제공 할 수 있습니다.

  2. getStuff()는 getMoreStuff()에 데이터를 반환하고 방금 가져온 데이터를 반환하지 않습니다. 당신은 그 확실히 다른 $ 정렬 값을 사용하여 작동 감사합니다!

+0

느린 타이퍼 - 부분 복제시 죄송합니다. 당신의 대답, chelmertz. –

+0

매력처럼 작동했습니다 - 도와 줘서 고마워요! – jonathanatx

+0

haha ​​np. – chelmertz

0

한 가지 방법은 그것을 할 수 있습니다 : 변수 $sort -values와 클래스 외부에서

public function getStuff($sort = 'myColumn ASC') { 
    $query = "... ORDER BY $sort"; 
} 

전화를하거나 클래스의 내부에서 정의 된 메소드 이름 (바로 가기를 좋아한다.)의

+0

. return $this->getStuff(); (또는 return $this->getStuff("anotherColumn DESC");를 사용해야하지만, 쿼리가 같은 방법 자체에서 호출 할 때 값을 반환하지 않을 이유를 알고 하지만 다른 메서드의 일부로 호출 할 때 값을 반환하지 않을 것이다? 두 번째 메서드의 일부로 호출 할 때 $ this-> getStuff()가 작동하지 않는 이유를 알아낼 수 없다. – jonathanatx

관련 문제