ホームページ >バックエンド開発 >PHP7 >php7 と PHP5 の比較の新機能とパフォーマンスの最適化の紹介

php7 と PHP5 の比較の新機能とパフォーマンスの最適化の紹介

coldplay.xixi
coldplay.xixi転載
2021-03-22 10:07:521990ブラウズ

php7 と PHP5 の比較の新機能とパフォーマンスの最適化の紹介

#php7 と PHP5 の新機能とパフォーマンスの最適化の比較

1. 抽象構文ツリー (AST) ) )

AST は、PHP コンパイル プロセスでミドルウェアの役割を果たし、インタープリターからオペコードを直接吐き出す元の方法を置き換え、インタープリター (パーサー) とコンパイラー (コンパイラー) を分離します。これにより、一部のハック コードを削減できると同時に、実装の理解と保守が容易になります。

推奨 (無料):PHP7

2. Natice TLS:

スレッド データ共有セキュリティ、データ共有メモリ空間として使用するグローバル スレッドを開きます

3. パラメーターの戻り値の型を指定します

4. zval 構造の変更

5. 例外処理

PHP 5 の try...catch。 ..最終的に従来のエラーを処理することはできません。通常は、必要に応じて set_error_handler() を使用してエラーをハッキングすることを検討します。ただし、set_error_handler()

で捕捉できないエラー タイプはまだ多くあります。PHP 7 では Throwable インターフェイスが導入されました。エラーと例外の両方が Throwable を実装します。Throwable は直接実装できませんが、\Exception クラスと \Error クラスが実装されます。延長することができます。 Throwable を使用して例外やエラーをキャッチできます。 \Exception はすべての PHP 例外およびユーザー例外の基本クラスであり、\Error はすべての内部 PHP エラーの基本クラスです。

6. 新しいパラメータ解析メソッド

7. ハッシュテーブルの変更

バケットと Zval は個別にメモリを割り当てなくなりました。無駄な冗長性がたくさんあります。

8. Null Coalesce 演算子

例に直接:

$name = $name ?? "NoName";  // 如果$name有值就取其值,否则设$name成"NoName"

9. Spaceship Operator Operator) (結合比較演算子)

形式:

(expr) 96b4fef55684b9312718d5de63fb7121 (expr)

左のオペランドが小さい場合は - 1、左と右のオペランドが小さい場合は - 1等しい場合は 0 が返され、左のオペランドの方が大きい場合は 1 が返されます。

$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. スロー可能なインターフェイス

これは、PHP 7 で導入された価値のある追加機能です。予想される新機能により、PHP のエラー処理機能が大幅に強化されます。 PHP 5 の try ... catch ... はついに従来のエラーを処理できなくなるため、通常は必要に応じて set_error_handler() を使用してハッキングすることを検討します。しかし、set_error_handler() が捕捉できないエラーの種類はまだたくさんあります。 PHP 7 では Throwable インターフェイスが導入されています。エラーと例外は 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
  • クラス: abstract、final
  • プロパティ/変数: public、private、protected
  • クラス定数: 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";
    }

iterable pseudo-type #PHP 7.1 では反復可能な疑似型が導入されました。反復可能型は、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 型

PHP 7.1 では、Nullable 型が導入されました。新しい Kotlin プログラミング言語のギミック機能の 1 つが 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 戻り値の型が導入されました。

rree

以上がphp7 と PHP5 の比較の新機能とパフォーマンスの最適化の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。