>  기사  >  백엔드 개발  >  PHP 변수 범위 및 전역 변수(그래픽 튜토리얼)

PHP 변수 범위 및 전역 변수(그래픽 튜토리얼)

亚连
亚连원래의
2018-05-17 13:58:061780검색

PHP는 스크립트용 해석 언어로, 약한 변수의 특성과 실행 후 리소스를 해제하는 기능이 있습니다. PHP7의 강력한 추가로 백엔드 언어에 강력한 돌풍이 불었습니다. 글쎄요, 제가 평소에 변수의 범위에 별로 관심을 두지 않았기 때문에 이 글을 쓰는 것은 스스로를 상기시키는 일이라고 볼 수 있습니다. HP는 스크립팅 해석 언어로서 약한 변수의 특성과 실행 후 리소스를 해제하는 특성을 가지고 있습니다. PHP7의 강력한 추가는 백엔드 언어에 강력한 소용돌이를 일으켰습니다. 글쎄요, 제가 평소에 변수의 범위에 별로 관심을 두지 않았기 때문에 이 글을 쓰는 것은 스스로를 상기시키는 일이라고 볼 수 있습니다.

PHP의 문법적 특징도 C++와 유사합니다. 게다가 $_POST, $FILE과 같은 전역 변수와 constructor(), destruct()와 같은 매직 변수를 사용하면 개발이 더 편리해집니다.

하지만 일부 사람들은 PHP의 변수 범위에 익숙하지 않습니다. PHP에서는 함수 변수와 전역 세계가 완전히 분리되어 있어 서로 액세스할 수 없습니다.

<?php
    $test = &#39;hello,world&#39;;
     abc(); //这里什么都不输出,因为访问不到$test变量
    function abc(){            echo($test);
    }?>

global 및 $GLOBALS[]

global 키워드를 사용하여 변수를 선언할 수 있습니다. 위의 예는 다음과 같습니다.

$test = &#39;hello,world&#39;;
     abc(); 
    function abc(){        global $test;            echo $test;
    }

전역 범위의 변수에 액세스하는 두 번째 방법은 다음과 같이 $GLOBALS 배열을 사용자 정의하는 것입니다. 특별한 PHP. 이전 예는 다음과 같이 작성할 수 있습니다.

$test = &#39;hello,world&#39;;    function abc(){        echo $GLOBALS[&#39;test&#39;];
    }
    abc();

저는 원래 global과 $GLOBALS가 작성 방법이 다르다는 점을 제외하고는 동일한 것으로 생각했습니다. 그러나 실제 응용에서는 둘 사이의 차이가 여전히 매우 크다는 것을 확인했습니다. 이 예:

function test1() { 
    global $v1, $v2; 
    $v2 =& $v1; 
} 
function test2() { 
    $GLOBALS[&#39;v3&#39;] =& $GLOBALS[&#39;v1&#39;]; 
} 
$v1 = 1; 
$v2 = $v3 = 0; 
test1(); 
echo $v2 ."\n"; 
test2(); 
echo $v3 ."\n";

이유는 다음과 같습니다.

결과는

이어야 하지 않나요? 예제를 보고 있습니다

function test() { 
    global $a; 
    unset($a); 
} 
$a = 1; 
test(); 
echo $a;

결과

가 분명히 설정되지 않은데 왜 여전히 인쇄되어 있나요?

우리 모두 알고 있듯이 우리 함수는 항상 개인 변수입니다. Unset은 전역 값을 설정 해제하고 전역은 함수의 실제 외부 변수가 아닌 함수의 외부 변수를 가리키는 별칭 변수를 생성합니다. ;$GLOBALS[]는 실제로 외부 변수라고 하며 함수 내부와 외부에서 항상 일관됩니다!


use()

use() 또는

namespace

사용을 이해하시나요? PHP 네임스페이스는 별칭 또는 가져오기를 사용하는 두 가지 방법을 지원합니다. 즉, 클래스 이름에 별칭을 사용하거나 네임스페이스 이름에 별칭을 사용하는 것입니다. operator사용. 하지만 오늘 우리가 이야기할 것은 다음과 같은 형식입니다: function use(){}php5.3
New
클로저 구문,

//普通
$a="hello,world!";$test = function () use($a){    
    echo $a;
};
$test();//引用
对象
$ob=(object)array(&#39;name&#39; => &#39;gbw&#39;);$test2 = function () use($ob){
    var_dump($ob);
};$test2();
PHP 클로저의 특성에 대해서는 별로 놀랄 일이 아닙니다. 실제로 CLASS를 사용할 수 있습니다. 비슷한 것을 달성하기 위해 훨씬 더 강력한 기능조차도 js의 클로저와 비교할 수 없습니다. 그래서 이런 글쓰기 방식은 그리 흔하지 않습니다.

관련글 :

한번에 다 익히고, php의 클로저함수 사용법과 차이점, & 참고의 의미를 자세히 설명드리겠습니다


php에 대해 자세히 설명해주세요 클래스 및 메소드 키워드 튜토리얼


PHP 클로저 함수() use()의 자세한 사용 방법

위 내용은 PHP 변수 범위 및 전역 변수(그래픽 튜토리얼)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.