2015-02-01 6 views
0

첫 번째는 OOP에서 새로 온 것입니다. 이것이 멍청한 질문이라면 죄송합니다.PHP는 클래스의 정적 메서드에 액세스

다국어 웹 사이트를 구축 중입니다. languga iso로 데이터베이스 값을 가져 왔습니다. 예 : index.php?lang=en $ _GET 매개 변수로 언어 값을 설정하면 mysql은 데이터베이스에 en 값만 가져옵니다. 문제는 내 LanguageController입니다.

// LanguageController Class 
class LanguageController { 
    public $lang = "en"; 
    public function __construct() { 
     return true;  
    } 
    public static function detectLang() { 
     $lang = 'en'; 
     ob_start(); 
     session_start(); 
     if(isset($_GET["lang"])) { 
      $lang= $_GET["lang"]; 
      $_SESSION["lang"] = $lang; 
      setcookie("lang", $lang, time() + (3600 * 24 * 30)); 
     } 
     else { 
      $lang = 'en'; 
      $_SESSION["lang"] = $lang; 
      setcookie("lang", $lang, time() + (3600 * 24 * 30)); 
      return true; 
     } 
    } 
} 

'en'과 같은 기본 $ lang 매개 변수를 전달하고 싶습니다. 클라이언트가 'fr'으로 언어를 변경하면 세션을 시작해야합니다. 그리고 mysql은 'fr'언어 값을 가져온다. 내 $lang 매개 변수를 detectLang() 메소드에 어떻게 전달할 수 있습니까?

시도했습니다. var_dump(LanguageController::detectLang()) 예고편은 NULL입니다.

큰 도움이되었습니다.

답변

1

함수에는 return 문이 없다 정적 일 필요가있다. 분명히 detectLang 함수가 작동하고 isset($_GET["lang"]) 조건은 true입니다.이 경우 반환 값은 NULL입니다.

+0

정말 고마워요. 나는'return $ lang' 값을 추가하고'string 'en'(length = 2)'를 반환합니다. – HddnTHA

-1

정적 메서드에서는 정적 특성 만 참조 할 수 있습니다. 값이 NULL입니다 반환 - 간단한 즉, $ LANG뿐만 아니라 즉

public static var $lang = "en"; 
관련 문제