당신이 전역을 사용하여 (또는 가능하면 그들을 피할 수)에 대해 찾은 일반적인 조언은 일반적으로 좋은 충고, 당신은 먼저 보는 것이 정확 대안을 사용하는 것보다. 가장 일반적인 대안은 함수에 값을 매개 변수로 전달하는 것입니다.
WordPress의 많은 기능은 이미 전역 변수에 의존하고 있으며 looking into the source code은 wp_get_current_user()
이라는 함수가 실제로는 $current_user
이라는 전역 변수를 설정하고있는 것으로 보입니다. wp_get_current_user()
will immediately return if the global $current_user
is already populated:
if (isset($current_user) && ($current_user instanceof WP_User) && ($id == $current_user->ID))
return $current_user;
에
여러 통화 그래서 당신은 설정하도록 구성 변수의리스트를보고, 나는 그들 중 하나에 모든 컨테이너 변수에 대한 강력한 필요성을 볼 수 없습니다. 가능한 한 코드에서 명백한 가독성을 선택하는 것이 좋습니다. WordPress가 global $user
을 생성하고 그 주위를 지나가는 대신 해당 사용자를 얻는 것이 목적 인 wp_get_current_user()
기능을 제공하므로 으로 전화하십시오.
이
// Can't do this:
echo "The user is {wp_get_current_user()->user_login}";
... 그래서 당신이 그렇지 않으면 사용자의 로그인에 대한 전역 변수를 만들 의도는 경우에, 로컬 설정 : 그것은 당신이, 예를 들어, 문자열 보간 내부의 함수 호출을 사용할 수 없다는 사실 당신의 기능 중 하나에. ID
때문에, 사용자 오브젝트의 ID
속성 컨테이너 역할 $user_id
같은 변수를 설정로서는
function your_func() {
$login = wp_get_current_user()->user_login;
echo "The user is $login";
}
실제로 사용자 객체의 속성, 그것의 그 관계를 유지하는 것이 좋다 논리 합리적하여 암호. 이 빠를 수 있지만 입력합니다 :
echo $user_id;
이 변수의 명시적인 소스 만드는 다음 $_SERVER
배열과 관련하여,
echo wp_get_current_user()->ID;
// or even better, using the API function
echo wp_get_current_user_id();
마지막을 이미 a PHP superglobal array이다, 사용할 수를 의 모든 범위 여분의 노력이 필요없이. 그래서 그 대신의 형태로 그것에서 하나의 키를 추상화의 :
$uri = $_SERVER['REQUEST_URI'];
난 그냥 자신의 기능에 직접 $_SERVER['REQUEST_URI']
를 사용합니다 을 선택할 것입니다.당신은 자동 전역 값을 사용하는 경우, 당신을 다시
function uses_uri() {
$uri = $_SERVER['REQUEST_URI'];
echo "I like to say $uri over and over $uri $uri $uri";
}
그러나 : 당신은 당신이 하나의 함수에 여러 번 사용할 필요가 찾을 경우, 예를 들어, 다음 기능에 지역 변수를 만들어 주시기 코드가 직접 사용되거나 로컬 변수가 사용되는 곳 근처에 정의되어 있으면 (더 쉽게 이해할 수 있도록 값을 추적해야하는 별도의 포함 파일에 정의 된 전역 변수와 달리) 코드가 더 읽기 쉽습니다.
WordPress의 API에 익숙하지 않기 때문에 요청 URI를 검색 할 수있는 API 함수가 제공된다고 말할 수 없습니다. 그러나 그러한 기능이 이미 존재하고 WP 코드에서 통상적으로 사용된다면 나는 놀라지 않을 것이다.
... 즉, 이들에 대한 변수를 귀찮게 그냥 직접 소스를 사용하지 않습니다. 사용자가 필요하면'wp_get_current_user()'를 호출하십시오. 'wp_get_current_user() -> user_login'으로 연결하여 직접 사용자 이름을 검색 할 수도 있습니다. –
필자가 생각한 원래의 추론은 wp_get_current_user()를 한 번만 호출하기를 원했을 것이라고 생각했습니다. $ user-> wp_get_current_user()를 호출 한 다음 $ user-> XXXX를 호출하면 사용자에 대한 정보가 필요할 때마다 약간의 것 같습니다. – ok1ha
그게 좋겠어, 고마워! – ok1ha