> 백엔드 개발 > PHP7 > php7과 PHP5 비교의 새로운 기능과 성능 최적화 소개

php7과 PHP5 비교의 새로운 기능과 성능 최적화 소개

coldplay.xixi
풀어 주다: 2023-02-17 21:08:02
앞으로
2010명이 탐색했습니다.

php7과 PHP5 비교의 새로운 기능과 성능 최적화 소개

php7과 PHP5의 새로운 기능 및 성능 최적화 비교

1. AST(추상 구문 트리)

AST는 PHP 컴파일 프로세스에서 원래 인터프리터를 대체하는 미들웨어 역할을 합니다. 직접 opcode를 내보내는 방식은 인터프리터(파서)와 컴파일러(컴파일러)를 분리하여 일부 Hack 코드를 줄이고 구현을 더 쉽게 이해하고 유지 관리할 수 있도록 합니다. 권장(무료):

PHP7

2. TLS:

스레드 데이터 공유 보안, 데이터 공유 메모리 공간을 위한 전역 스레드 열기

3. 매개변수 반환 값 유형 지정

4. zval 구조 변경

5. PHP 5의 try...catch...finally는 전통적인 오류를 처리할 수 없습니다. 필요한 경우 일반적으로 set_error_handler()를 사용하여 해킹하는 것을 고려할 것입니다. 그러나 여전히 set_error_handler()로 포착할 수 없는 오류 유형이 많이 있습니다.

PHP 7에서는 오류와 예외 모두 Throwable을 구현합니다. Throwable은 직접 구현할 수 없지만 Exception 및 Error 클래스는 확장될 수 있습니다. Throwable을 사용하여 예외와 오류를 잡을 수 있습니다. Exception은 모든 PHP의 기본 클래스이고 Error는 모든 내부 PHP 오류의 기본 클래스입니다.

6. 새로운 매개변수 구문 분석 방법

7. 해시 테이블 변경

버킷과 Zval은 더 이상 메모리를 별도로 할당하지 않아 불필요한 중복성을 많이 제거합니다.

8. Null Coalesce 연산자

예제로 직접:

$name = $name ?? "NoName";  // 如果$name有值就取其值,否则设$name成"NoName"
로그인 후 복사

9. 우주선 연산자(Spaceship Operator)(결합 비교 연산자)

양식:

(expr) < ;= >(expr)

왼쪽 피연산자가 더 작으면 -1이 반환되고, 왼쪽 피연산자가 더 크면 0이 반환됩니다.

$name = ["Simen", "Suzy", "Cook", "Stella"];
usort($name, function ($left, $right) {
    return $left <=> $right;
});
print_r($name);
로그인 후 복사

10. 상수 배열

PHP 7에서는 이전에 클래스/인터페이스에서만 상수 배열을 사용할 수 있었습니다. 이제 PHP 7은 클래스가 아닌 인터페이스에서도 일반 상수 배열을 지원합니다.

define("USER", [
  "name"  => "Simen",
  "sex"   => "Male",
  "age"   => "38",
  "skill" => ["PHP", "MySQL", "C"]
]);
// USER["skill"][2] = "C/C++";  // PHP Fatal error:  Cannot use temporary expression in write context in...
로그인 후 복사

11. 통합 변수 구문

$goo = [
    "bar" => [
        "baz" => 100,
        "cug" => 900
    ]
];

$foo = "goo";

$$foo["bar"]["baz"];  // 实际为:($$foo)[&#39;bar&#39;][&#39;baz&#39;]; PHP 5 中为:${$foo[&#39;bar&#39;][&#39;baz&#39;]};
                      // PHP 7 中一个笼统的判定规则是,由左向右结合。
로그인 후 복사

12. Throwable 인터페이스

이것은 PHP 7에 도입될 것으로 기대되는 새로운 기능으로, PHP의 오류 처리 기능을 크게 향상시킵니다. PHP 5의 try ... catch ... finally는 전통적인 오류를 처리할 수 없으므로 일반적으로 필요한 경우 set_error_handler()를 사용하여 해킹하는 것을 고려할 것입니다. 그러나 set_error_handler()가 포착할 수 없는 오류 유형이 여전히 많이 있습니다. PHP 7에는 Throwable 인터페이스가 도입되었습니다. Throwable은 직접 구현될 수 없지만 Exception 및 Error 클래스는 확장될 수 있습니다. Throwable을 사용하여 예외와 오류를 잡을 수 있습니다. Exception은 모든 PHP의 기본 클래스이고 Error는 모든 내부 PHP 오류의 기본 클래스입니다.

$name = "Tony";
try {
    $name = $name->method();
} catch (\Error $e) {
    echo "出错消息 --- ", $e->getMessage(), PHP_EOL;
}

try {
    $name = $name->method();
} catch (\Throwable $e) {
    echo "出错消息 --- ", $e->getMessage(), PHP_EOL;
}

try {
    intp(5, 0);
} catch (\pisionByZeroError $e) {
    echo "出错消息 --- ", $e->getMessage(), PHP_EOL;
}
로그인 후 복사

13. 조합문을 사용하세요

조합문을 사용하면 입력 중복을 줄일 수 있습니다.

use PHPGoodTaste\Utils\{
    Util,
    Form,
    Form\Validation,
    Form\Binding
};
로그인 후 복사

14. 여러 유형의 예외/오류를 한 번에 포착

PHP 7.1에는 수직 막대 "|"를 통해 여러 예외/오류 유형을 포착하는 새로운 구문이 추가되었습니다.

try {
      throw new LengthException("LengthException");
    //   throw new pisionByZeroError("pisionByZeroError");
    //   throw new Exception("Exception");
} catch (\pisionByZeroError | \LengthException $e) {
    echo "出错消息 --- ", $e->getMessage(), PHP_EOL;
} catch (\Exception $e) {
    echo "出错消息 --- ", $e->getMessage(), PHP_EOL;
} finally {
    // ...
}
로그인 후 복사

15. 가시성 수정자 변경

PHP 7.1 이전의 클래스 상수는 가시성 수정자를 추가할 수 없습니다. 현재 클래스 상수의 가시성은 공개와 동일합니다. PHP 7.1에는 클래스 상수에 대한 가시성 수정자 지원이 추가되었습니다. 일반적으로 가시성 수정자의 사용 범위는 다음과 같습니다.

함수/메서드: public, private, protected, abstract, final

Class: abstract, final

속성/변수: public, private, protected
  • Class 상수: public, private, protected
  • class YourClass 
    {
        const THE_OLD_STYLE_CONST = "One";
    
        public const THE_PUBLIC_CONST = "Two";
        private const THE_PRIVATE_CONST = "Three";
        protected const THE_PROTECTED_CONST = "Four";
    }
    로그인 후 복사
  • 반복 가능한 의사 유형
  • PHP 7.1에서는 반복 가능한 의사 유형을 도입했습니다. iterable 유형은 PHP에서 예약된 클래스 이름인 Traversable을 구현하는 배열, 생성기 및 객체에 적용됩니다.
$fn = function (iterable $it) : iterable {
    $result = [];
    foreach ($it as $value) {
        $result[] = $value + 1000;
    }
    return $result;
};

$fn([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
로그인 후 복사

Nullable Type

PHP 7.1에서는 Nullable Type을 도입했습니다. 새롭게 떠오르는 Kotlin 프로그래밍 언어의 기믹 기능 중 하나는 null 허용 유형입니다. PHP는 점점 더 "강력한 유형의 언어"처럼 되어가고 있습니다. 동일한 유형의 필수 요구사항에 대해 Null 허용 여부를 설정할 수 있습니다.

$fn = function (?int $in) {
    return $in ?? "NULL";
};

$fn(null);
$fn(5);
$fn();  // TypeError: Too few arguments to function {closure}(), 0 passed in ...
로그인 후 복사

Void 반환 유형

PHP 7.1에서는 Void 반환 유형이 도입되었습니다.

아아아아

위 내용은 php7과 PHP5 비교의 새로운 기능과 성능 최적화 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿