2016-06-25 3 views
0

PHP 스크립트에서 나는 $GLOBALS['someName'] = someValue을 사용하여 스크립트 시작 부분에 전역 변수를 정의합니다. 이 전역 변수는 require을 사용하여 나중에 스크립트에로드되는 someFunction에 의해 사용됩니다. 내가 맞다면 스크립트 시작 부분에 $someName = someValue을 설정하고 $someName을 전체적으로 사용할 수 있어야합니다. 그러나이 작업을 수행 할 때 에는 $someName을 사용할 수 없습니다. 그것은 $GLOBALS['someName']을 사용할 때만 작동합니다. $someName은 PHP 스크립트의 시작 부분에서 정의 할 때 왜 전역 변수로 작동하지 않습니까?require_once 파일에서 PHP의 전역 변수를 사용할 수없는 이유는 무엇입니까?

+1

함수에 전역 변수를 사용하고 로컬 변수를 생성하지 말 것을 PHP에 지시해야합니다. 'global $ someName; '또는'$ GLOBALS [ "someName"]'을 사용하십시오. – Rizier123

+2

* 힌트 * : 전역을 사용하는 실제적으로 나쁜 습관 – Jonathan

+0

대신 $ _SESSION 또는 $ _COOKIES를 사용하십시오. $ _SESSION도 $ _SESSION [ 'somename']처럼 훨씬 더 안전하고 안전합니다. –

답변

1

함수 외부에서 변수를 정의하면 함수는 페이지에서 전역이지만 함수에서는 액세스 할 수 없습니다.

  1. 당신은 global 키워드를 사용해야합니다 : 다른 함수에서 변수 글로벌 및 사용하려면 두 가지 방법이 있습니다. 따라서 함수의 처음에 global $someName이라고 쓰고 함수에서 정상적으로 사용하십시오.

  2. 전역 변수를 global $someName으로 다시 정의하지 말고 직접 $GLOBALS['someName']으로 사용하십시오.

자세한 내용은 this을 참조하십시오.

0

좋아의가 적절한 예제를 제공하자 :

나는 세계에 접근 보여 PHP에서 대화 형 터미널을 엽니 다.

Interactive mode enabled 
php > $myvar = "yves"; 
php > function testing() { echo $myvar; }; testing(); 
PHP Notice: Undefined variable: myvar in php shell code on line 1 
php > function testing_with_global() { global $myvar; echo $myvar; } 
php > testing_with_global(); 
yves 
php > 

또는 $GLOBALS['myvar']으로 글로벌에 액세스 할 수 있습니다.

하지만 정말로 이것을하고 싶지는 않습니다. why을 참조하십시오.

관련 문제