찾다
백엔드 개발PHP 튜토리얼PHP 5.4 공식 버전의 중요한 새로운 기능

PHP는 웹 개발 분야에서 항상 매우 중요하고 빠르고 편리한 개발 언어였으며 대다수의 개발자가 선호합니다. 이제 새로운 기능이 많이 추가된 공식 버전인 PHP 5.4가 출시되었습니다. 공식에서는 성능이 20% 향상되고 리소스를 덜 차지한다고 주장합니다. 이 기사에서는 PHP 5.4의 몇 가지 새로운 기능을 배우도록 안내하겠습니다.

PHP 5.4에서는 우선 100개 이상의 버그가 수정되었고, 메모리 및 성능 최적화가 더 잘 이루어졌으며, 이전 버전의 일부 메소드(register_globals, Magic_quotes, safe_mode, 등이 있으며, PHP 5.4에서는 기본 인코딩 방법이 UTF-8로 변경되어 개발자가 애플리케이션의 다국어 버전을 개발하는 데 매우 유용하다는 점에 유의해야 합니다.

Traits 소개

먼저 PHP 5.4에 추가된 새로운 기능인 Traits를 소개하겠습니다. 실제로 이 기능은 다른 언어에서도 볼 수 있습니다. 간단히 말해서 조직 구조가 클래스와 유사하므로(그러나 클래스처럼 인스턴스화할 수는 없음) 개발자가 다양한 메서드를 사용할 수 있습니다. . 클래스에서 이 메소드 세트를 재사용하십시오. PHP는 단일 상속 언어이므로 하나의 클래스가 동시에 여러 클래스를 상속할 수 없습니다. 이때 특성이 유용합니다.

특성은 실제 클래스에 속하지 않는 솔루션 모음입니다. 사용자는 Trait 인스턴스를 만들거나 Traits에서 메서드를 직접 호출할 수 없습니다. 대신 사용자는 Traits를 실제 클래스에 병합해야 합니다. 우선순위 측면에서 Trait 메서드는 동일한 이름의 상속된 메서드를 재정의하고, 현재 병합된 클래스에 있는 동일한 이름의 메서드는 Trait 메서드를 재정의합니다.

다음은 Traits의 사용을 설명하는 예입니다. 우리가 구축하고 있는 웹사이트가 Facebook과 Twitter의 API를 동시에 호출해야 한다고 가정해 보겠습니다. 이 두 API를 호출하는 동안 우리는 컬 메서드를 호출하여 반환된 콘텐츠를 얻기 위한 일련의 작업을 수행해야 합니다. 두 개의 API 인터페이스를 사용하지 않으려면 다음 코드와 같이 PHP 5.4의 Traits를 사용하여 구현할 수 있는 두 클래스에 동일한 메소드가 반복적으로 작성됩니다.

특성 cURL

 {

 공개 함수 컬($url)

 {

 $ch = cur_init()
> 🎜> cur_close($ch);

return $output;

}

cURL 사용

공개 함수 get($url)

 {

return json_decode($this->curl(' http://api.twitter.com/'.$url))

 }

 } > class Facebook_API

 {

use cURL; // 호출 특성

공개 함수 get($url)

 {

return json_decode($this->curl('http://graph.facebook.com/'.$url))

 }

 }

$facebook = new Facebook_API();

echo $facebook->get('500058753')->name; 페이스북 사용자 이름 출력

/**cURL 래퍼 특성*/

echo (new Facebook_API)->get('500058753')->name

$ foo = 'get';

echo(새 Facebook_API)->$foo('500058753')->name

echo(새 Twitter_API)->get('1 /users/show.json?screen_name=rasmus')-> ;name;



위 코드에서 함수 컬렉션은 먼저 키워드 특성을 통해 정의되며 이름은 Curl입니다. url의 매개변수 값을 기반으로 하는 컬이라는 메서드가 포함된 이 메서드는 PHP의 내장 cur 메서드를 호출하여 해당 URL에 해당하는 페이지 출력 콘텐츠를 반환합니다. 그런 다음 Twitter_API 클래스와 Facebook_API

클래스에서 cURL을 사용하여 각각 이 Traits를 호출하고 해당 get 메서드에서 Traits의 컬 메서드를 호출합니다.

위 코드에서는 new Facebook_API()를 사용하여 facebook 개체의 인스턴스를 생성하는 것 외에도 PHP 5.4의 새로운 기능, 즉 다음과 같은 사용 방법을 보여줍니다.

클래스 멤버에 액세스할 때 인스턴스를 사용할 수 있습니다. 즉,

echo (new Facebook_API)->get('500058753')->name

$foo = 'get' ;

echo (new Facebook_API)->$foo('500058753')->name;




보셨나요? 변수에는 get 값이 할당됩니다. 그런 다음 클래스에서 get 메서드를 호출하려고 하면 (new Facebook_API)->$foo('500058753')->name;을 통해 호출이 이루어집니다.

Traits의 사용을 설명하기 위해 다른 예를 들어보겠습니다. 이 예는 다음 코드와 같이 더 간단할 수 있습니다.

Trait Net

 {

public function net()

 {

return 'Net';

 } > 공개 함수 tuts()

return 'Tuts'; >
}

🎜> {

 Net, Tuts 사용

 public function plus()

 {

 return '+';

 }

$o = 새로운 NetTuts

echo $o->net(), $o->tuts(), $o ->plus ();

echo (새 NetTuts)->net(), (새 NetTuts)->tuts(), (새 NetTuts)->plus()




위의 결과는 모두 NetTuts로 출력됩니다. 또한 PHP 5.4의 특성에 대한 마법 상수는 __TRAIT__입니다.

디버깅 서버 내장

과거 PHP 개발에서는 대개 Apache HTTP Server와 연동하여 개발해야 했습니다. PHP 5.4에는 개발자가 복잡한 구성 없이 개발 작업을 완료할 수 있도록 간단한 웹 서버가 내장되어 있습니다. 다음은 PHP 5.4에 내장된 서버를 사용하여 Windows 환경에서 관련 작업을 완료하는 방법을 단계별로 설명합니다.

Step 1) 먼저 c드라이브의 루트 디렉터리인 public_html에 디렉터리를 생성하고, 해당 파일에 router.php 파일을 생성합니다. 코드는 다음과 같습니다.

// router.php
if (preg_match('#.php$#', $_SERVER['REQUEST_URI']))
{
require basename($_SERVER['REQUEST_URI' ]); // PHP 파일 제공
}
else if (strpos($_SERVER['REQUEST_URI'], '.') !== false)
{
return false; 파일을 있는 그대로
}
?>





그런 다음 다음과 같이 index.php라는 간단한 PHP 파일을 만듭니다.

// index.php

echo 'Hello Nettuts+ Readers!'

?>

그런 다음 php 5.4 설치 디렉토리를 열고 php.ini를 찾으세요. 그런 다음 include_path 다음 줄을 추가합니다.

include_path = ".;C:phpPEAR;C:public_html"



2단계 내장 웹 서버 실행

먼저 명령줄 모드로 들어가서 php 디렉토리를 입력하고 다음 명령을 입력하세요:

php -S 0.0.0.0:8080 -t C:public_html router.php
지정된 모든 머신 여기에서 액세스할 수 있습니다. 이 서버에는 포트 8080이 지정되어 있으며, c:public_html 아래에 라우터 및 php 파일로 작업 모니터링을 위한 라우팅 파일이 지정되어 있습니다. 위의 명령줄을 입력하고 Enter를 누르면 다음과 같은 정보 프롬프트가 나타납니다. 🎜>
이는 내장 서버가 올바르게 시작되었음을 증명합니다.

이때 브라우저에 http://localhost:8080/index.php 를 입력하시면 접속하실 수 있습니다.

더 간결해진 배열 구문

PHP 5.4에서는 배열 선언과 같은 일부 구문 지원이 더 간결해졌습니다. 이제

에서는 대괄호 사용을 지원합니다.

$fruits = array('apples', 'oranges', 'bananas') // 기존 선언 방법

 $fruits = ['apples', 'oranges', 'bananas']; //PHP 5.4에서 새로 지원되는 선언 방법

// 새로운 연관 배열 액세스

$array = [

'foo' => ',

'bar' => 'foo'

 ];




물론 php 5.4에서는 배열 선언 방법도 지원됩니다.

함수 반환값에서 배열값에 직접 접근 ​

PHP 5.4에서는 함수 반환값에서 배열값에 직접 접근이 지원됩니다. 예를 들면 다음과 같습니다.

$tmp =explore('', 'Alan Mathison Turing')

echo $tmp[1]; // Mathison

in 이 예에서 PHP 5.4 이전이라면, 위 문자열에서 Mathison을 추출하고 싶다면 먼저 분해 함수를 이용해 해당 값을 반환한 후 배열의 값을 가져와야 한다. PHP 5.4에서는 다음과 같이 배열에서 반환 값에 직접 액세스할 수 있습니다.

echoexplore(' ', 'Alan Mathison Turing')[1]; 이것이 훨씬 더 편리합니다. 또 다른 예로, 마지막 문자열 부분 Turing을 추가하여 위 문자열을 얻으려면 PHP 5.4에서 다음을 수행할 수 있습니다.

echo end(explode(' ', 'Alan Mathison Turing')); 다음과 같이 좀 더 복잡한 예를 들어보세요.

function foobar()

 {

  return ['foo' => ['bar' => 'Hello']]

 } > Echo foobar()['foo']['bar']; // Hello 출력




$this 포인터는 클로저에서 사용할 수 있습니다

이전 PHP 버전에서는 익명 메서드(클로저라고도 함)에서 $this 포인터를 사용할 수 없었지만, PHP 5.4에서는 가능합니다.

class Foo

{

function hello() {

echo 'Hello Nettuts!'

}

function anonymous()

{

 return function() {

 $this->hello(); //이전 버전에서는 불가능합니다

 }

 }

 class Bar = $o->anonymous(); // 실제로 Foo::hello()를 호출합니다.

 $x() // 실행되는 내용 is Foo::hello()

 }

 }

new Bar(new Foo); //출력 Hello Nettuts!

위 구현 방법 PHP 5.4에서는 다음과 같이 더 편리하게 작성할 수 있습니다. :

Function anonymous()

$that = $this

return function() use ($that) {

  $that->hello()

 }

 }
이제 php.ini의 short_tag 태그가 어떻게 설정되어 있는지에 따라 템플릿에서 언제든지 이 메서드를 사용할 수 있으므로 이 메서드를 대체할 수 있습니다. 이진수를 식별하려면 "0b" 접두사를 사용하세요. 이제 이진수를 사용하려면 다음과 같이 앞에 0b 접두사를 추가하세요.

echo 0b11111

기능 유형 향상 힌트

PHP는 약한 유형의 언어이기 때문에 PHP 5.0 이후에 함수 유형 힌트 함수가 도입되었습니다. 이는 함수에 전달된 모든 매개변수가 유형 검사됨을 의미합니다. 예를 들어 다음과 같은 클래스가 있습니다. 🎜>
class bar {

 }

function foo(bar $foo) { 전달된 매개변수는 bar 클래스의 인스턴스여야 합니다. 그렇지 않으면 시스템에서 오류가 발생합니다. 마찬가지로 배열의 경우 다음과 같이 판단할 수도 있습니다.

function foo(array $foo) {

 }

foo(array(1, 2, 3) ); // 정확합니다.

foo(123) // 정확하지 않습니다.




배열이 전달됩니다. PHP 5.4에서는 다음을 지원합니다. 호출 가능 유형이 지원됩니다. 과거에는 함수가 콜백 함수를 매개변수로 받아들이도록 하려면 그것이 올바른 호출 가능 함수인지 확인하기 위해 많은 추가 작업을 수행해야 했습니다. 예는 다음과 같습니다.

함수 foo(callable $callback) {

 }

Then:



foo("false") //false는 호출 가능하지 않기 때문에 오류가 발생합니다. type

foo("printf"); //맞음

foo(function(){}) //맞음

class A {

static function show() {

 }

 }

foo(array("A", "show")); //정확함



죄송합니다. PHP 5.4에서는 문자, 정수 등 기본 유형에 대한 유형 힌트가 아직 지원되지 않습니다.

시간 통계 강화

PHP 5.4에서는 $_SERVER['REQUEST_TIME_FLOAT']가 새로 추가되었으며, 이는 서비스 요청 시간을 계산하는 데 사용되며 ms 단위로 크게 표시됩니다. 다음과 같이 개발자에게 편리합니다:

echo 'script running time', round(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'], 2), 's'

요약:

이 기사에서는 PHP 5.4의 몇 가지 새로운 기능을 간략하게 요약합니다. PHP 5.4의 더욱 확실한 기능 개선 사항은 주로 특성 및 내장 디버깅 서버, UTF-8 기본 지원 등입니다. 새로운 기능 PHP 5.4 사용자 매뉴얼을 참고하세요.

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP 세션의 개념을 간단한 용어로 설명하십시오.PHP 세션의 개념을 간단한 용어로 설명하십시오.Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsususingauniqueIdStoredInAcookie.here'showtomanagetheMeftically : 1) STARTASESSIONSTART_START () andSTAREDATAIN $ _SESSION.2) RegenerATERATESSESSIDIDAFTERLOGINWITHSESSION_RATERATERATES (True) TopreventSES

PHP 세션에 저장된 모든 값을 어떻게 반복합니까?PHP 세션에 저장된 모든 값을 어떻게 반복합니까?Apr 26, 2025 am 12:06 AM

PHP에서 세션 데이터를 통한 반복은 다음 단계를 통해 달성 할 수 있습니다. 1. Session_start ()를 사용하여 세션을 시작하십시오. 2. $ _session 배열의 모든 키 값 쌍을 통해 Foreach 루프를 통과합니다. 3. 복잡한 데이터 구조를 처리 할 때 is_array () 또는 is_object () 함수를 사용하고 print_r ()를 사용하여 자세한 정보를 출력하십시오. 4. Traversal을 최적화 할 때 페이징을 사용하여 한 번에 많은 양의 데이터를 처리하지 않도록 할 수 있습니다. 이를 통해 실제 프로젝트에서 PHP 세션 데이터를보다 효율적으로 관리하고 사용하는 데 도움이됩니다.

사용자 인증에 세션을 사용하는 방법을 설명하십시오.사용자 인증에 세션을 사용하는 방법을 설명하십시오.Apr 26, 2025 am 12:04 AM

이 세션은 서버 측 상태 관리 메커니즘을 통해 사용자 인증을 인식합니다. 1) 세션 생성 및 고유 ID의 세션 생성, 2) ID는 쿠키를 통해 전달됩니다. 3) ID를 통해 서버 저장 및 세션 데이터에 액세스합니다. 4) 사용자 인증 및 상태 관리가 실현되어 응용 프로그램 보안 및 사용자 경험이 향상됩니다.

PHP 세션에 사용자 이름을 저장하는 방법의 예를 제시하십시오.PHP 세션에 사용자 이름을 저장하는 방법의 예를 제시하십시오.Apr 26, 2025 am 12:03 AM

tostoreauser'snameinaphpsession, startSessionstart_start (), wathsignthenameto $ _session [ 'username']. 1) useSentess_start () toinitializethesession.2) assimeuser'snameto $ _session [ 'username']

PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?Apr 25, 2025 am 12:16 AM

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP의 세션 관련 문제를 어떻게 디버그합니까?PHP의 세션 관련 문제를 어떻게 디버그합니까?Apr 25, 2025 am 12:12 AM

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

session_start ()가 여러 번 호출되면 어떻게됩니까?session_start ()가 여러 번 호출되면 어떻게됩니까?Apr 25, 2025 am 12:06 AM

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

PHP에서 세션 수명을 어떻게 구성합니까?PHP에서 세션 수명을 어떻게 구성합니까?Apr 25, 2025 am 12:05 AM

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

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 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구