2014-11-21 1 views
1

이 오류가 발생했습니다. 문제는 무엇입니까? 내 코드

class Example{ 
    public function get_lang() 
     { 
      $jezik = get_option('jezik'); 
        switch ($jezik) { 
         case $jezik == 'rs_RS': 
         $drzava = 'NazivSrb'; 
         break; 
         case $jezik == 'ro_RO': 
         $drzava = 'NazivRo'; 
         break; 
         case $jezik == 'uk_UK': 
         $drzava = 'NazivRu'; 
         break; 
        } 
      return $drzava;   
     } 

    static public function ExecuteSql($where_criteria=NULL) { 
      global $wpdb; 

        $drzva = $this->get_lang(); 

      $upit = " 
          SELECT ID, Naziv, $drzava, PhoneCode, Kod 
        FROM wp_drzava"; 
      if ($where_criteria) 
       $upit .=" WHERE ". $where_criteria ; 
      $upit .= " GROUP BY Kod"; 
      //echo $upit; 
      return $wpdb->get_results($upit); 
     } 

{ 

는 기본적으로 나는 방법의 반환 값을 get_lang 사용하고, 다른 방법의 변수에 저장하고 쿼리를 전달하는 시도이다. 는하지만 난이 줄

$drzva = $this->get_lang(); 

답변

1

당신은 static 방법 내부 $this을 사용할 수 없습니다 당신이 static 방법

self::get_lang(); 

내에서 동일한 클래스의 방법을 사용하려는 경우 self 키워드를 사용

사용,이 문제를 해결하려면 편집 : get_lang() 메서드 내에서 클래스 속성을 사용하지 않는 경우 정적 메서드를합니다.

+0

이 경우 get_lang()은 정적이어야합니다. – segarci

+1

다른 메소드 ('get_lang()')가 메소드 내에서'$ this'를 사용하지 않는 동안'self :: callmethod'와 같이 정적이 아닌 메소드를 호출 할 수 있습니다. 정적 메서드는 독립적입니다, 당신은 클래스 개체를 만들지 않고 호출 할 수 있습니다. – Girish

+0

get_lang() 정적 메서드는 public ExecuteSql 메서드를 통해 액세스 할 수 있습니다. self ::도 작동합니다. –

0

당신은 (거기에 존재하지 않는 $this) 정적 공공 기능에 $this을 사용할 수 없습니다에 오류가 발생합니다. ..

$example = new Example; 
$drzva = $example->get_lang(); 
관련 문제