2013-06-10 5 views
-1

사용자 언어를 확인하고 변수에 기록하는 기능이 있습니다. 시간이 지나면 나는 그것들을 합치는 아이디어를 얻는다. 그래서 변수의 처음 사용 전에 함수를 호출 할 필요가있다. 그래서 var의 내부에 함수의 호출을 넣는다. 아이디어를 가지고 그것을 대체 할 것이다. 본인. 내가 원하는대체 변수 내부의 대체 변수

$GLOBALS['user_language'] = function() 
{ 
    return get_user_language(); 
} 

function get_user_language() 
{ 
    $user_language = 'en'; 
    $GLOBALS['user_language'] = $user_language; 
    return $user_language; 
} 

//somewhere in the script 
print_r($GLOBALS['user_language']); 

: 그것은 다시, 내가 분명히 아닌 결과의 함수라고 생각 나에게 "폐쇄 개체"를 제공하기 위해 노력하고 렸기 때문에하지만, 작동하지 않는 :(여기에 코드의 중요한 부분입니다 당신은 당신은 다시 끌어 get_user_language()에 이미 설정 때문이다.

+0

이 코드는 의미가 없습니다. 당신이하고 싶은 것에 대한 당신의 묘사는 그다지 설명 적이 지 않습니다. 변수에서 함수를 호출 할 수 없습니다. 그저 가짜 버전의 설탕을 입히지 않고 전체 스크립트를 붙여 넣는 것이 어떨까요? – ChrisG

+0

오류가 발생하면 무엇이 더 필요합니까? '$ user_language' 변수를 어떻게 설정했는지 알고 싶다면 200 줄의 코드가 더 필요합니까? 그것은 중요한 문제가 아닙니다. – BASILIO

+0

내 대답을 확인하십시오. – ChrisG

답변

1
function get_user_language() 
{ 
    $user_language = 'en'; 
    $GLOBALS['user_language'] = $user_language; 
    return $user_language; 
} 

$GLOBALS['user_language'] = get_user_language(); 


//somewhere in the script 
print_r($GLOBALS['user_language']); 

'en' 밖으로, 아무것도 더 얻을하지만이 이상하다 할 수 있습니다. 그것은 거의 루프를 만들 것입니다. 적절한 방법은 아마 $GLOBALS['user_language'] = $user_language;에서 제거하는 것 그 기능.

희망 답변.

+0

대단히 고마워요, 이것이 제가 필요한 것입니다. – BASILIO

+0

실행해라. 그러면 나를 이해할 것이다, 내가 그렇게하는 이유) http://pastebin.com/mNVPk4pi – BASILIO

+0

젠장, 나는 행복한 끝에서의 댄스에 너무 빠르다. 그건 내가 원하는거야. 'get_user_language()'호출이 필요합니다. 오직'$ GLOBALS [ 'user_language']'를 호출하고 스크립트가 실행될 때마다 당신의 예제를 수행하십시오. – BASILIO

0

print_r($GLOBALS['user_language']); 대신 print_r(get_user_language())을 사용하면됩니다. 실제로

function get_user_language() 
{ 
    static $user_language = null; 
    if ($user_language === null) { 
     $user_language = 'en'; // this would be where you make the DB query 
    } 
    return $user_language; 
} 

, A의 : 여러 번 사용자의 언어를 점점 (예를 들어 데이터베이스 쿼리를 반복해서 실행됩니다) 특히 느린 될 경우

, 당신은 이런 식으로 뭔가를 할 수 대용량 PHP 응용 프로그램 인 경우이 코드는 일반적으로 class에 있으며 객체 등록 정보로 값을 저장하므로 응용 프로그램이 현재 사용자 만이 아닌 여러 사용자에 대해 DB 쿼리 결과를 캐시 할 수 있습니다.

+0

"그냥 print_r (get_user_language() 사용)"이것은 피하고 싶습니다. . 처음 시작할 때를 놓는 것을 잊어 버렸을 때, 나는 오류를 찾기 위해 많은 시간을 할애했다. 나는 그것을 자율적으로 만들고자한다. – BASILIO

+0

@BASILIO :'$ user_language'의 모든 항목을'get_user_language()'로 대체하는 것이 정말로 옵션이 아닌가? PHP에는 객체에 대한 "마법 getter"기능이 있지만 전역 변수에는 해당하지 않습니다. – PleaseStand