찾다
백엔드 개발PHP 튜토리얼PHP 8.4의 HTTP 동사 변경 사항

PHP 8.4가 11월에 출시되었으며 귀하와 귀하의 팀은 의심의 여지가 없습니다. 새로운 기능과 지원 중단 사항을 이해하기 위해 열심히 노력했습니다. 이 최신 언어 반복에 수반되는 변경 사항입니다. 이것 POST가 아닌 HTTP 동사에 대한 변경 사항이 포함되어 있습니다.

이 블로그에서 저는 PHP의 HTTP 동사의 배경을 통해 HTTP가 왜 사용되는지 설명합니다. PHP 8.4의 동사 변경 사항이 중요합니다. 그런 다음 개발자를 위한 가이드를 제공합니다. 코드 내에서 이러한 변경 사항을 구현할 때 참조할 수 있습니다.

截屏2024-12-24 16.43.04.png

PHP의 HTTP 동사: 배경

PHP 웹을 염두에 두고 개발되었으며 웹에서 양식 처리를 지원했습니다. 초기. 원래 HTTP에는 기본적으로 두 가지만 있었습니다. 브라우저가 웹페이지를 요청할 수 있는 방법: GET 또는 POST를 통해.  HTML 양식은 여전히 ​​이 두 가지 방법만 지원하지만, JavaScript에는 모든 HTTP 메서드를 사용하여 HTTP 요청을 보내는 기능이 있습니다. 그리고 여러 툴킷(예: HTMX)이 개발자를 위해 이를 원활하게 처리할 수도 있습니다.

GET 및 POST HTTP 메서드

GET 요청은 URL의 쿼리 문자열을 통해 양식 데이터를 전달합니다. 즉, 양식 결과를 북마크에 추가하고, 반복하고, 심지어는 캐시되었습니다. 이 때문에 GET 요청은 일반적으로 작업에만 사용됩니다. 상태를 변경하지 않고 상태를 요청하는 경우: 검색, 결과 정렬, 결과 필터링, 페이지 매김 등

을 수행하고 싶다면 애플리케이션 내에서 변경을 수행할 수 있는 작업(예: 장바구니 처리, 지원 메시지 보내기, 업로드 이미지 등 — POST HTTP 메서드를 사용합니다. POST 요청은 비멱등성(non-idempotent)으로 간주됩니다. 즉, 캐시할 수 없고 캐시해서는 안 됩니다. 부작용이 있기 때문에 반복하세요. 이러한 효과는 데이터베이스, 파일 시스템 작업, 웹 요청 또는 기타 항목의 삽입, 변경 또는 삭제를 의미할 수 있습니다.

In 양식 데이터 처리를 자동화하기 위해 PHP는 여러 가지 기능을 제공합니다. 들어오는 요청에서 채우는 초전역 변수입니다. $_GET은 URL 쿼리 문자열 인수로 채워지며 모든 요청 메서드에서 채워질 수 있습니다. 그러나 $_POST는 다음과 같은 콘텐츠 유형 application/x-www-form-urlencoded를 사용하여 생성된 POST 요청의 본문에서만 채워집니다.

title=HTTP Verbs Changes in PHP 8.4&url=https://example.org/blog/php-8.4-http-verbs&author=Just Some Guy&tags[0]=php&tags[1]=http


PHP는 이를 가져와 $_POST 슈퍼전역을 다음과 같이 채웁니다.

<?php $_POST = [
    &#39;title&#39; => 'HTTP Verbs Changes in PHP 8.4',
    'url' => 'https://example.org/blog/php-8.4-http-verbs',
    'author' => 'Just Some Guy',
    'tags' => ['php', 'http'],
];


PHP는 이 작업을 뒤에서 수행하는 것은 PHP를 배우고 시작하기 쉽게 만드는 이유 중 하나입니다.

또한 브라우저가 양식 데이터를 제공하는 것 외에 파일을 업로드할 수 있도록 하는 콘텐츠 유형 multipart/form-data도 처리할 수 있습니다. 그렇게 하면 추가로 $_FILES가 채워집니다. 업로드된 파일에 대한 정보를 제공하는 superglobal; 그런 다음 개발자는 해당 파일을 저장하기 전에 검증하고 사전 처리할 수 있습니다. 영구적인 위치에 있습니다.

기타 HTTP 방법

다음이 있습니다. GET 및 POST보다 훨씬 더 많은 HTTP 메소드와 웹 개발자 종종 내용에 대한 맥락을 제공하기 위해 다른 방법을 선택하기를 원할 것입니다.

  • PUT은 데이터가 기존 데이터를 대체해야 함을 나타내는 데 자주 사용됩니다.
  • PATCH는 기존 레코드에 대한 부분 업데이트를 나타내는 데 자주 사용됩니다.
  • DELETE는 제출된 기록이나 콘텐츠를 삭제하거나 다음으로 표시해야 함을 나타내는 데 사용됩니다. 삭제되었습니다.

브라우저는 (아직!) 기본적으로 이를 지원하지 않지만 많은 JavaScript 프레임워크와 라이브러리는 지원합니다.

그러나 문제가 있습니다: PHP는 이러한 요청을 자동으로 처리하지 않습니다. ~ 안에 사실, 이러한 구문 분석은 전적으로 사용자가 직접 처리해야 합니다. 파일 업로드를 다음과 같이 처리하기 시작하면 큰 문제가 될 수 있습니다. 양식 데이터도 마찬가지입니다. (직접 파서를 굴리지 마세요!)

비 POST HTTP 동사 변경

PHP 8.4에서는 request_parse_body() 메서드를 도입합니다.

title=HTTP Verbs Changes in PHP 8.4&url=https://example.org/blog/php-8.4-http-verbs&author=Just Some Guy&tags[0]=php&tags[1]=http


함수는 항상 그랬던 것과 같은 방식으로 들어오는 요청을 구문 분석합니다. POST 요청의 경우 대체 변수를 지정할 수 있습니다. 양식 데이터 및 파일 업로드를 저장하거나 슈퍼 전역을 덮어씁니다. 원하는 경우). 아래에서 자세히 설명하는 $options 인수를 통해 파서의 동작을 변경할 수도 있습니다.

일반적인 패턴은 다음과 같습니다.

<?php $_POST = [
    &#39;title&#39; => 'HTTP Verbs Changes in PHP 8.4',
    'url' => 'https://example.org/blog/php-8.4-http-verbs',
    'author' => 'Just Some Guy',
    'tags' => ['php', 'http'],
];


(하지만 프레임워크를 사용하고 있다면 프레임워크가 해당 세부 사항을 처리해 줄 것이라고 기대하세요.)

그렇습니다. 말 그대로 기능 전체입니다. 제공하는 간단한 기능 PHP 개발자로서 이미 익숙한 턴키 동작입니다. 그것 이보다 더 좋을 수는 없습니다!

PHP 8.4의 HTTP 동사: 개발자 가이드

지금 PHP 8.4의 HTTP 동사 변경 사항에 대해 이야기했습니다. 이를 사용하고 적용하는 방법에 대한 몇 가지 예를 살펴보십시오. 코드 업데이트.

지원되는 콘텐츠 유형

POST 요청과 마찬가지로 request_parse_body()는 다음 콘텐츠가 포함된 요청만 구문 분석합니다. 유형:

  • application/x-www-form-urlencoded
  • multipart/form-data

application/x-www-의 경우 form-urlencoded, $_FILES와 동일 배열(반환된 배열의 인덱스 1)은 비어 있습니다. 내용이라면 유형이 지원되지 않으면 함수에서 InvalidArgumentException이 발생합니다.

php://input

PHP를 사용하면 php://input 스트림을 통해 원시 요청 콘텐츠를 검사할 수 있습니다. 이는 (PHP 7.4 기준) 여러 번 읽을 수 있는 버퍼링된 스트림입니다. 그러나 multipart/form-data를 수신하는 경우 내용을 보면 PHP는 약간 파괴적입니다. 그 이유는 바로 버퍼링입니다. 파일로 인해 파일 내용이 디스크에 두 번 기록될 수 있습니다. 더 많은 메모리, 저장 공간 및 I/O 사용량이 발생합니다.

따라서 request_parse_body()는 php://input을 파괴적으로 소비하므로 두 번 호출하면 안 됩니다.

$options 매개변수

request_parse_body()에 대한 $options 매개변수를 사용하면 다음 매개변수에 의존하는 대신 런타임 시 동작을 변경할 수 있습니다. 하드 코딩된 php.ini 구성.

  • 파싱을 시도할 최대 콘텐츠 크기에 대해 post_max_size를 지정합니다.
  • 파싱을 시도할 양식 변수 수를 제한하려면 max_input_vars를 지정합니다. 구문 분석
  • upload_max_filesize를 지정하여 개별 파일의 크기를 제한하세요. 핸들.
  • 처리할 파일 업로드 수를 제한하려면 max_file_uploads를 지정하세요.
  • 분석할 파일 업로드 및 양식 데이터 변수의 조합을 제한하려면 max_multipart_body_parts를 지정하세요.

위 내용은 PHP 8.4의 HTTP 동사 변경 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 zend.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
교통량이 많은 웹 사이트를위한 PHP 성능 튜닝교통량이 많은 웹 사이트를위한 PHP 성능 튜닝May 14, 2025 am 12:13 AM

thesecrettokeepingAphp-poweredwebsiterunningsmoothlydlyUnderHeavyloadInvolvesEveralKeyStrategies : 1) ubstractOpCodeCachingWithOpCacheTecescripteExecutionTime, 2) usedatabasequeryCachingwithRedSendatabaseload, 3) LeverAgeCdnslikeCloudforforporerververforporporpin

PHP의 종속성 주입 : 초보자를위한 코드 예제PHP의 종속성 주입 : 초보자를위한 코드 예제May 14, 2025 am 12:08 AM

Code는 코드가 더 명확하고 유지 관리하기 쉽기 때문에 의존성 주입 (DI)에 관심을 가져야합니다. 1) DI는 클래스를 분리하여 더 모듈 식으로 만들고, 2) 테스트 및 코드 유연성의 편의성을 향상시키고, 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하지만 성능 영향 및 순환 종속성에주의를 기울이십시오. 4) 모범 사례는 추상 인터페이스에 의존하여 느슨한 커플 링을 달성하는 것입니다.

PHP 성능 : 응용 프로그램을 최적화 할 수 있습니까?PHP 성능 : 응용 프로그램을 최적화 할 수 있습니까?May 14, 2025 am 12:04 AM

예, PPAPPLICATIONISPOSSIBLEADESLESTION.1) INVERECINGUSINGAPCUTERODUCEDABASELOAD.2) INCODINCEDEXING, ENGICIONEQUERIES 및 CONNECTIONPOULING.3) 향상된 보드 바이어링, 플로 팅 포르코 잉을 피하는 최적화 된 APPCUTERODECEDATABASELOAD.2)

PHP 성능 최적화 : 궁극적 인 가이드PHP 성능 최적화 : 궁극적 인 가이드May 14, 2025 am 12:02 AM

theKeyStrategiesToSINCINTIFILINTINTIFILINTINTHPPORMATIONPERFORMANCEARE : 1) USEOPCODECACHING-CCHACHETEDECUTECUTINGTIME, 2) 최적화 된 ABESINSTEMENTEMENDSTEMENTEMENDSENDSTATEMENTENDS 및 PROPERINDEXING, 3) ConfigureWebSerVERSLIKENGINXXWITHPMFORBETPERMERCORMANCES, 4)

PHP 의존성 주입 컨테이너 : 빠른 시작PHP 의존성 주입 컨테이너 : 빠른 시작May 13, 2025 am 12:11 AM

aphpdectionenceindectioncontainerisatoolthatmanagesclassdependencies, 향상 Codemodularity, testability 및 maintainability.itactAsacentralHubForCreatingAndingDinjectingDingingDingingdecting.

PHP의 종속성 주입 대 서비스 로케이터PHP의 종속성 주입 대 서비스 로케이터May 13, 2025 am 12:10 AM

대규모 응용 프로그램의 경우 SELLENCIONINGESS (DI)를 선택하십시오. ServicElocator는 소규모 프로젝트 또는 프로토 타입에 적합합니다. 1) DI는 생성자 주입을 통한 코드의 테스트 가능성과 모듈성을 향상시킵니다. 2) Servicelocator는 센터 등록을 통해 서비스를 얻습니다. 이는 편리하지만 코드 커플 링이 증가 할 수 있습니다.

PHP 성능 최적화 전략.PHP 성능 최적화 전략.May 13, 2025 am 12:06 AM

phPapplicationSCanBeoptimizedForsPeedandefficiencyby : 1) ENABLEOPCACHEINPHP.INI, 2) PREPAREDSTATEMENTSWITHPDOFORDATABASEQUERIES 사용

PHP 이메일 검증 : 이메일이 올바르게 전송되도록합니다PHP 이메일 검증 : 이메일이 올바르게 전송되도록합니다May 13, 2025 am 12:06 AM

phpeMailValidationInvoLvestHreesteps : 1) formatValidationUsingRegularexpressionsTochemailformat; 2) dnsValidationToErethedomainHasaValidMxRecord; 3) smtpvalidation, theSTHOROUGHMETHOD, theCheckSiftheCefTHECCECKSOCCONNECTERTETETETETETETWERTETWERTETWER

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

DVWA

DVWA

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