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

PHP 5.4 공식 버전의 중요한 새로운 기능

巴扎黑
巴扎黑원래의
2016-11-23 13:26:451172검색

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 파일을 생성합니다. 코드는 다음과 같습니다.

< ?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으로 문의하세요.