php7の新機能を詳しく解説
今回はphp7の新機能をまとめます。以下は実際の事例です。編集者の足跡をたどって見てみましょう。
php7の新機能
スカラー型宣言(パラメータが特定の型である必要があります。パラメータの型が一致しない場合、php5は致命的なエラーを引き起こし、php7はTypeError例外をスローします)
2 つのモード: 強制モード (デフォルト) と厳密モード
型パラメーターは次のとおりです:
1. string
戻り値の型宣言
php7 は戻り値の型の宣言を追加します。戻り値の型の宣言は、関数の戻り値の型を指定するものと非常に似ています。使用可能な型は、パラメーター宣言で使用可能な型と同じです。 例:<span style="font-size:18px;">function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, '3', 4.1));</span>
NULL合体演算子
変数が存在し、値がNULLでない場合は独自の値を返し、それ以外の場合は2番目のパラメータを返します
<span style="font-size:18px;"><?php function arraysSum(array ...$arrays): array { return array_map(function(array $array): int { return array_sum($array); }, $arrays); } print_r(arraysSum([1,2,3], [4,5,6], [7,8,9])); 以上例程会输出: Array ( [0] => 6 [1] => 15 [2] => 24 )</span>
結果上の式と下の式は同じです。
$username = $_GET['user'] ?? 'nobody';
結合比較演算子
例: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
define() を通じて定数配列を定義します
<span style="font-size:18px;"><?php // Integers echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 // Floats echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 // Strings echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 ?></span>
匿名クラス
unserialize() のフィルタリングを提供します
<?php define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[1]; // outputs "cat" ?> php5.6 中 仅能通过const 定义 <?php const $a = [ 'a','b','c', ]; echo $a[1] ; //输出 “b” ?>
新しく追加された IntlChar クラスは、より多くの ICU 関数を公開するように設計されています。このクラス自体は、複数の文字セットで Unicode 文字を操作するための多くの静的メソッドを定義します
これを使用したい場合。クラスを使用するには、最初に Intl 拡張機能をインストールする必要があります
ExpectedExpected は、以前の Asser() の下位互換性があり強化されたメソッドであり、運用環境でアサーションをゼロコストで有効にし、アサーションが失敗したときに特性例外をスローする機能。
assert() は、最初のパラメータを、単なる評価対象の文字列やテスト対象のブール値ではなく、式にすることを可能にする言語構造です
クラスのセットを宣言するには use を使用してください
<span style="font-size:18px;"><?php // 把所有的对象转换为 __PHP_Incomplete_Class object $data = unserialize($foo, ["allowed_classes" => false]); // 除了MyClass,MyClass2 都转换为 into __PHP_Incomplete_Class object $data = unserialize($foo, ["allowed_classes" => ["MyClass", "MyClass2"]); // 默认的行为,接受所有的参数 $data = unserialize($foo, ["allowed_classes" => true]); </span>
ジェネレータの戻り式
は次のとおりです:
<span style="font-size:18px;"><?php // Pre PHP 7 code use some\namespace\ClassA; use some\namespace\ClassB; use some\namespace\ClassC as C; use function some\namespace\fn_a; use function some\namespace\fn_b; use function some\namespace\fn_c; use const some\namespace\ConstA; use const some\namespace\ConstB; use const some\namespace\ConstC; // PHP 7+ code use some\namespace\{ClassA, ClassB, ClassC as C}; use function some\namespace\{fn_a, fn_b, fn_c}; use const some\namespace\{ConstA, ConstB, ConstC}; ?> </span>
ジェネレータは次のように別のジェネレータ
に委任できます。 りー
新しい整数除算関数 intp()
は次のとおりです: <span style="font-size:18px;"><?php
$gen = (function() {
yield 1;
yield 2;
return 3;
})();
foreach ($gen as $val) {
echo $val, PHP_EOL;
}
echo $gen->getReturn(), PHP_EOL;// 换行,为了提高源码可读性
以上例程会输出:
1
2
3
</span>
これで、session_start() を通じて配列パラメータを受け入れることができ、php.ini にセッションを書き込むことができます設定コマンドのパラメータは、session.lazy_write、read_and_close、cache_limiter などをサポートします。
は次のとおりです: <span style="font-size:18px;"><?php
function gen()
{
yield 1;
yield 2;
yield from gen2();
}
function gen2()
{
yield 3;
yield 4;
}
foreach (gen() as $val)
{
echo $val, PHP_EOL;
}
?>
以上例程会输出:
1
2
3
4
</span>
新しい preg_replace_callback_array() 関数
は preg_replace_callback() よりも優れたパフォーマンスを発揮します
新機能 2つrandom_bytes() と random_int()
具体的な使用法については、以下を参照してください:random_bytes()
random_int()
list() は自動解凍をサポートしなくなりました
以前は、list は ArrayAccess を実装したオブジェクトの動作を保証していませんでしたが、この問題は解決されました
以上がphp7の新機能を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 7.0 でインストールされているプラグインが表示されない問題を解決するには: プラグインの設定を確認し、プラグインを有効にします。 PHP を再起動して、構成の変更を適用します。プラグイン ファイルの権限をチェックして、それらが正しいことを確認します。不足している依存関係をインストールして、プラグインが適切に機能することを確認します。他のすべての手順が失敗した場合は、PHP を再構築します。他に考えられる原因としては、プラグインのバージョンに互換性がない、間違ったバージョンをロードしている、PHP 構成の問題などが挙げられます。

PHP8.3 リリース: 新機能の概要 テクノロジーが発展し、ニーズが変化するにつれて、プログラミング言語は常に更新され、改善されています。 Web 開発で広く使用されているスクリプト言語として、PHP は開発者により強力で効率的なツールを提供するために絶えず改良されてきました。最近リリースされた PHP 8.3 バージョンには、待望の新機能と改善点が多数含まれています。これらの新機能の概要を見てみましょう。 null 以外のプロパティの初期化 PHP の過去のバージョンでは、クラス プロパティに明示的に値が割り当てられていない場合、その値は

最新テクノロジーを習得するために役立つ、PHP8 の新機能の詳細な分析 PHP プログラミング言語は、時間の経過とともに常に進化し、改善されています。最近リリースされた PHP8 バージョンは、開発者に多くのエキサイティングな新機能と改善を提供し、開発作業にさらなる利便性と効率をもたらします。この記事では、PHP8 の新機能を詳しく分析し、これらの最新テクノロジーをよりよく習得するのに役立つ具体的なコード例を提供します。 JIT コンパイラー PHP8 では JIT (Just-In-Time) コンパイルが導入されています

PHP サーバー環境の一般的な解決策には、正しい PHP バージョンがインストールされていること、および関連ファイルがモジュール ディレクトリにコピーされていることを確認することが含まれます。 SELinux を一時的または永続的に無効にします。 PHP.ini をチェックして構成し、必要な拡張機能が追加され、正しく設定されていることを確認します。 PHP-FPM サービスを開始または再起動します。 DNS 設定に解決の問題がないか確認してください。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

PHP7 と比較すると、PHP8 にはパフォーマンス、新機能と構文の改善、型システム、エラー処理と拡張機能の点でいくつかの利点と改善点があります。ただし、どのバージョンを使用するかは、特定のニーズとプロジェクトの状況によって異なります。詳細な紹介: 1. パフォーマンスの向上、PHP8 はコードの実行速度を向上できるジャストインタイム (JIT) コンパイラーを導入します; 2. 新機能と構文の改善、PHP8 は名前付きパラメーターとオプションのパラメーターの宣言をサポートします。関数の作成 呼び出しがより柔軟になり、匿名クラス、プロパティの型宣言などが導入されています。

php8 の新機能には、JIT コンパイラ、型推論、名前付きパラメータ、共用体型、プロパティ、エラー処理の改善、非同期プログラミングのサポート、新しい標準ライブラリ関数、匿名クラス拡張機能が含まれます。詳細な紹介: 1. JIT コンパイラー、PHP8 は、重要なパフォーマンスの向上である JIT コンパイラーを導入します。JIT コンパイラーは、一部の高頻度の実行コードをリアルタイムでコンパイルおよび最適化できるため、実行速度が向上します。2. 型導出、PHP8型推論機能を導入し、開発者が変数宣言時などに変数の型を自動的に推測できるようにします。

ローカル環境:redhat6.7系。 nginx1.12.1、php7.1.0、コードは yii2 フレームワークの問題を使用しています。ローカル Web サイトは elasticsearch サービスを使用する必要があります。 PHP がローカル サーバー上に構築された elasticsearch を使用する場合、ローカル負荷は正常です。 AWS の elasticsearch サービスを使用すると、ローカル サーバーの負荷が高すぎることがよくあります。 nginx と php のログを確認して、例外が見つからないことを確認します。システム内の同時接続数も多くありません。そんなとき、上司から教えてもらったstrace診断ツールを思い出しました。デバッグプロセス: PHP サブプロセス idstrace- を検索します。
