변수의 범위는 변수가 정의된 컨텍스트(즉, 유효 범위)입니다. 대부분의 PHP 변수에는 단일 범위만 있습니다. 이 단일 범위 범위에는 include 및 require 에 의해 도입된 파일도 포함됩니다. 예:
<?php $a = 1; include 'b.inc'; ?>
여기서 $a 변수는 포함 파일 b.inc에 적용됩니다. 그러나 사용자 정의 함수에는 로컬 함수 범위가 도입됩니다. 함수 내에서 사용되는 모든 변수는 기본적으로 로컬 함수 범위로 제한됩니다. 예:
<?php $a = 1; /* global scope */ function Test() { echo $a; /* reference to local scope variable */ } Test(); ?>
echo 문이 변수 $a의 로컬 버전을 참조하고 이 범위 내의 값이 할당되지 않았기 때문에 이 스크립트는 출력을 생성하지 않습니다. PHP의 전역 변수는 C 언어와 약간 다르다는 것을 알 수 있습니다. C 언어에서 전역 변수는 로컬 변수에 의해 재정의되지 않는 한 자동으로 함수에 적용됩니다. 이로 인해 일부 문제가 발생할 수 있으며 누군가 실수로 전역 변수를 변경할 수도 있습니다. PHP의 전역 변수는 함수에서 사용될 때 전역으로 선언되어야 합니다.
global 키워드
먼저 global 사용 예:
예제 #1 global 사용
<?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ?>
위 스크립트의 출력은 다음과 같습니다. " 3". 전역 변수 $a 및 $b가 함수에서 선언된 후 두 변수에 대한 모든 참조는 해당 전역 버전을 가리킵니다. PHP는 함수가 선언할 수 있는 전역 변수의 최대 개수에 제한이 없습니다.
전역 범위의 변수에 액세스하는 두 번째 방법은 특별한 PHP 사용자 정의 $GLOBALS 배열을 사용하는 것입니다. 이전 예는 다음과 같이 작성할 수 있습니다.
예 #2 전역 대신 $GLOBALS 사용
<?php $a = 1; $b = 2; function Sum() { $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } Sum(); echo $b; ?>
$GLOBALS는 연관 배열이고, 각 변수는 요소이며, 키 이름은 다음에 해당합니다. 변수 이름, 값 해당 변수의 내용. $GLOBALS는 슈퍼전역 변수이기 때문에 $GLOBALS는 전역 범위에 존재합니다. 다음 예에서는 슈퍼 전역 변수의 사용을 보여줍니다.
예 #3 슈퍼 전역 변수 및 범위를 보여주는 예
<?php function test_global() { // 大多数的预定义变量并不 "super",它们需要用 'global' 关键字来使它们在函数的本地区域中有效。 global $HTTP_POST_VARS; echo $HTTP_POST_VARS['name']; // Superglobals 在任何范围内都有效,它们并不需要 'global' 声明。Superglobals 是在 PHP 4.1.0 引入的。 echo $_POST['name']; } ?>
정적 변수 사용
또 다른 변수 범위 중요한 기능은 다음과 같습니다. 정적 변수. 정적 변수는 로컬 함수 범위에만 존재하지만 프로그램 실행이 이 범위를 벗어나도 해당 값은 손실되지 않습니다. 다음 예를 살펴보십시오.
예제 #4 정적 변수가 필요한 예를 보여줍니다.
<?php function Test() { $a = 0; echo $a; $a++; } ?>
이 함수는 호출될 때마다 $a의 값이 다음과 같기 때문에 쓸모가 없습니다. 0으로 설정하고 출력을 0으로 설정합니다. 변수를 1씩 증가시키는 $a++는 함수가 종료되면 변수 $a가 더 이상 존재하지 않기 때문에 아무런 효과가 없습니다. 현재 카운트 값을 잃지 않는 카운팅 함수를 작성하려면 $a 변수를 정적으로 정의하십시오.
예제 #5 정적 변수 사용 예
<?php function test() { static $a = 0; echo $a; $a++; } ?>
이제 변수 $ a는 test() 함수가 처음 호출될 때만 초기화되며, test() 함수에 대한 각 후속 호출은 $a 값을 출력하고 1씩 증가시킵니다.
정적 변수는 재귀 함수를 처리하는 방법도 제공합니다. 재귀 함수는 자기 자신을 호출하는 함수입니다. 재귀 함수를 작성할 때는 무기한 재귀될 수 있으므로 주의하세요. 재귀를 종료하는 적절한 방법이 있는지 확인해야 합니다. 다음의 간단한 함수는 정지 시점을 결정하기 위해 정적 변수 $count를 사용하여 10까지 재귀적으로 계산합니다.
예제 #6 정적 변수 및 재귀 함수
<?php function test() { static $count = 0; $count++; echo $count; if ($count < 10) { test(); } $count--; } ?>
정적 변수는 다음과 같이 사용할 수 있습니다. 위의 예시문. 선언의 표현식 결과와 함께 이를 할당하면 구문 분석 오류가 발생합니다.
예제 #7 정적 변수 선언
<?php function foo(){ static $int = 0; // correct static $int = 1+2; // wrong (as it is an expression) static $int = sqrt(121); // wrong (as it is an expression too) $int++; echo $int; } ?>
정적 선언은 컴파일 타임에 해결됩니다.
함수 외부에서 전역 키워드를 사용해도 문제가 없습니다. 함수 내에 파일을 포함할 때 사용할 수 있습니다.
전역 및 정적 변수의 참조
PHP4를 구동하는 Zend 엔진 1세대에서는 변수의 정적 및 전역 정의가 참조 형식으로 구현됩니다. 예를 들어, 함수 범위 내에서 global 문을 사용하여 가져온 실제 전역 변수는 실제로 전역 변수에 대한 참조를 설정합니다. 이로 인해 다음 예에서 설명한 것처럼 예기치 않은 동작이 발생할 수 있습니다.
<?php function test_global_ref() { global $obj; $obj = &new stdclass; } function test_global_noref() { global $obj; $obj = new stdclass; } test_global_ref(); var_dump($obj); test_global_noref(); var_dump($obj); ?>
위 루틴은 다음을 출력합니다.
NULL
object(stdClass)(0) { }
정적 문에도 비슷한 동작이 적용됩니다. 참조는 정적으로 저장되지 않습니다.
<?php function &get_instance_ref() { static $obj; echo 'Static object: '; var_dump($obj); if (!isset($obj)) { // 将一个引用赋值给静态变量 $obj = &new stdclass; } $obj->property++; return $obj; } function &get_instance_noref() { static $obj; echo 'Static object: '; var_dump($obj); if (!isset($obj)) { // 将一个对象赋值给静态变量 $obj = new stdclass; } $obj->property++; return $obj; } $obj1 = get_instance_ref(); $still_obj1 = get_instance_ref(); echo "\n"; $obj2 = get_instance_noref(); $still_obj2 = get_instance_noref(); ?>
위 루틴은 다음을 출력합니다.
Static object: NULL Static object: NULL Static object: NULL Static object: object(stdClass)(1) { ["property"]=>int(1) }
위 예는 정적 변수에 참조를 할당할 때 두 번째로 값이 다음과 같다는 것을 보여줍니다. &get_instance_ref() 함수를 호출할 때 기억되지 않습니다.

tooptimizephpcodeforregedmemoryUsageancutionEcution-time, followthesesteps : 1) usereferencesinsteAdArgedArgedArgeDatureStoredUcememoryConsumption.2) leveragephp'sbuilt-infunctionslikearray_mapforfosterexecution

phpisusedforendingemailsduetoitsintegrationwithsermailservices 및 externalsmtpproviders, 1) setupyourphpenvironmentwitheberverandphp, temailfuncpp를 보장합니다

이메일을 보내는 가장 좋은 방법은 Phpmailer 라이브러리를 사용하는 것입니다. 1) Mail () 함수를 사용하는 것은 간단하지만 신뢰할 수 없으므로 이메일이 스팸으로 입력되거나 배송 할 수 없습니다. 2) Phpmailer는 더 나은 제어 및 신뢰성을 제공하며 HTML 메일, 첨부 파일 및 SMTP 인증을 지원합니다. 3) SMTP 설정이 올바르게 구성되었는지 확인하고 (예 : STARTTLS 또는 SSL/TLS) 암호화가 보안을 향상시키는 데 사용됩니다. 4) 많은 양의 이메일의 경우 메일 대기열 시스템을 사용하여 성능을 최적화하십시오.

CustomHeadersAndAdAncedFeaturesInpHeAmailEnhanceFectionality.1) 1) CustomHeadersAdDmetAdataFortrackingand Categorization.2) htmlemailsallowformattingandinteractivity.3) attachmentSentUsingLibraries likePhpMailer.4) smtpauthenticimprpr

PHP 및 SMTP를 사용하여 메일을 보내는 것은 PHPMailer 라이브러리를 통해 달성 할 수 있습니다. 1) phpmailer 설치 및 구성, 2) SMTP 서버 세부 정보 설정, 3) 이메일 컨텐츠 정의, 4) 이메일 보내기 및 손잡이 오류. 이 방법을 사용하여 이메일의 신뢰성과 보안을 보장하십시오.

TheBesteptroachForendingeMailsInphPisusingThephPmailerlibraryDuetoitsReliability, featurerichness 및 reaseofuse.phpmailersupportssmtp, proversDetailErrorHandling, supportSattachments, andenhancessecurity.foroptimalu

의존성 주입 (DI)을 사용하는 이유는 코드의 느슨한 커플 링, 테스트 가능성 및 유지 관리 가능성을 촉진하기 때문입니다. 1) 생성자를 사용하여 종속성을 주입하고, 2) 서비스 로케이터 사용을 피하고, 3) 종속성 주입 컨테이너를 사용하여 종속성을 관리하고, 4) 주입 종속성을 통한 테스트 가능성을 향상 시키십시오.

phpperformancetuningiscrucialbecauseitenhancesspeedandefficies, thearevitalforwebapplications.1) cachingsdatabaseloadandimprovesResponsetimes.2) 최적화 된 databasequerieseiesecessarycolumnsingpeedsupedsupeveval.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

WebStorm Mac 버전
유용한 JavaScript 개발 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음