찾다

 >  Q&A  >  본문

코드 블록 전체의 PHP 변수 범위

<p>저는 PHP를 처음 접했고 아직 배우는 중입니다. </p> <p>특정 변수를 검색하고 해당 속성에 액세스해야 하는 경우가 많습니다. </p> <pre class="brush:php;toolbar:false;"><?php $id = $_REQUEST['id']; $user_info = get_userdata($id); echo('사용자 이름: ' . $user_info->user_login . "<br>"); echo('사용자 레벨: ' . $user_info->user_level . "<br>"); echo('사용자 ID: ' . $user_info->ID . "<br>"); echo('이름: ' . $user_info->user_firstname . "<br>"); echo('성: ' . $user_info->user_lastname . "<br>"); echo('등록 시간: ' . $user_info->user_registered . "<br>"); ?></pre> <p>저는<code>$user_info = get_userdata($id);</ code>를 검색한 다음 필요할 때 사용하는 것을 선호합니다. </p> <pre class="brush:php;toolbar:false;"><?php $id = $_REQUEST['id']; $user_info = get_userdata($id); ?> <일부 HTML> <?php echo $user_info->user_login ?> <일부 HTML> <?php echo $user_info->user_login ?></pre> <p>하지만 <code>$user_info</code>는 전역적이지 않기 때문에 블록 간에 공유할 수 없는 것 같습니다. 이 상황에서 일반적인 접근 방식은 무엇입니까? </p>
P粉771233336P粉771233336462일 전612

모든 응답(2)나는 대답할 것이다

  • P粉617237727

    P粉6172377272023-08-25 09:32:59

    코드 블록(루프, 조건문) 내에서는 사용할 수 있지만 functions 내에서는 사용할 수 없습니다. 함수 내에서 사용하려면 global 키워드를 사용해야 합니다:

    으아아아

    공식 문서에서 PHP 변수 범위에 대해 자세히 알아볼 수 있습니다 :)

    회신하다
    0
  • P粉466909449

    P粉4669094492023-08-25 09:01:17

    PHP 코드 블록에 너무 많은 의미를 부여하고 있습니다.
    이것은 세계적인 일이 아닙니다.
    이 블록은 동일한 PHP 스크립트에 속합니다. 이는 HTML을 출력하는 좋은 방법일 뿐이며 다른 의미는 없습니다. 아무런 차이 없이 echo HTML로 대체할 수 있습니다.

    전체 PHP 스크립트는 반복적인 방식이 아닌 한 번에 실행됩니다. 상상할 수 있듯이 PHP 블록이 서버 측에서 실행된 다음 HTML 블록이 클라이언트 측에서 실행되고 다시 서버 측으로 돌아오는 것을 생각해 보세요. PHP 블록이 실행되는 위치 등을 비유합니다. 이것은 잘못된 것입니다.
    전체 PHP 스크립트는 서버 측에서 실행되며 결과는 브라우저에 일반 HTML로 표시되고 종료됩니다.

    이것이 동일한 PHP 스크립트에서 HTML 양식과 해당 핸들러를 모두 작성할 수 없는 이유입니다. 전자 뒤에 후자를 넣으면 됩니다. 핸들러가 작동하려면 서버를 다시 호출해야 합니다. 이것은 완전히 다른 통화, 동일한 스크립트의 또 다른 인스턴스가 될 것이며 이전 통화에 대해 아무것도 모르는, 종료된 지 오래되었습니다. 이것은 또한 PHP에 대해 알아야 할 또 다른 사항입니다:

    PHP 스크립트 실행은 원자적입니다. 이는 브라우저에서 지속적으로 실행되는 데스크톱 애플리케이션이나 데스크톱 애플리케이션에 지속적으로 연결을 유지하는 데몬과도 다릅니다. 이는 명령줄 유틸리티에 더 가깝습니다. 작업을 수행하고 종료합니다. 개별적으로 실행됩니다:

    1. 브라우저가 통화를 시작합니다
    2. PHP가 깨어나서 HTML 페이지를 생성하고 이를 브라우저로 보내고그리고 종료됩니다
    3. 브라우저는 HTML을 렌더링하여 사용자에게 표시합니다.
    4. 사용자가 링크를 클릭합니다
    5. 브라우저가 통화를 시작합니다
    6. 이전 호출에 대해 아무것도 모르는 또 다른 PHP 인스턴스가 깨어나

    회신하다
    0
  • 취소회신하다