PHP 7.4 は PHP 7 の次のマイナー バージョンで、2019 年 11 月 28 日に一般公開される予定です。 PHP の高速化と信頼性の向上を実現する PHP 7.4 の新機能を見てみましょう。
もちろん、私は PHP 8 をもっと楽しみにしています。 JIT の提案の一部が承認されたため、これは PHP にとって新たなマイルストーンとなる可能性があります。
PHP 7.4 を使用した PHP の新機能は何ですか?
#● 配列内でのアンパックのサポート - 配列展開演算子##● アロー関数 2.0 (短いクロージャ)
配列内の PHP 7.4 Spread 演算子は式に導入され、PHP 5.6 以降で利用可能です。
Parameter unpacking は、配列と Traversable をパラメータ リストに解凍するための構文です。配列または Traversable を解凍するには、次の例のように、先頭に ... (3 つのドット) を付ける必要があります。 function test(...$args) { var_dump($args); }
test(1, 2, 3);
ただし
では、この機能を配列に拡張することが推奨されています。 : $arr = [...$args];
Spread 演算子の最初の利点はパフォーマンスです。
:Spread 演算子の方が array_merge よりも優れたパフォーマンスが必要であると記載されています。スプレッド演算子が構文構造であり、array_merge がメソッドであるというだけではありません。また、コンパイル時に、定数配列は高効率を実現するために最適化されます。Spread 演算子の大きな利点は、array_merge 関数が配列のみをサポートするのに対し、任意の走査可能なオブジェクトをサポートすることです。
以下は、Spread 演算子を使用した配列内のパラメーターの例です:
$parts = ['apple', 'pear']; $fruits = ['banana', 'orange', ...$parts, 'watermelon']; var_dump($fruits);
このコードを PHP 7.3 以前で実行すると、PHP は解析エラーをスローします:
Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in /app/spread-operator.php on line 3
代わりに、PHP 7.4 は配列を返します
array(5) { [0]=> string(6) "banana" [1]=> string(6) "orange" [2]=> string(5) "apple" [3]=> string(4) "pear" [4]=> string(10) "watermelon" }
RFC には、同じ配列を複数回拡張できると記載されています。さらに、スプレッド演算子の前後に通常の要素を追加できるため、配列内のどこでもスプレッド演算子の構文を使用できます。したがって、次のコードは期待どおりに機能します。
$arr1 = [1, 2, 3]; $arr2 = [4, 5, 6]; $arr3 = [...$arr1, ...$arr2]; $arr4 = [...$arr1, ...$arr3, 7, 8, 9];
関数によって返された配列をパラメータとして渡し、それを新しい配列に入れることもできます。
function buildArray(){ return ['red', 'green', 'blue']; } $arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];
PHP 7.4 の出力次の配列:
array(6) { [0]=> string(3) "red" [1]=> string(5) "green" [2]=> string(4) "blue" [3]=> string(4) "pink" [4]=> string(6) "violet" [5]=> string(6) "yellow" }generator
:
function generator() { for ($i = 3; $i <= 5; $i++) { yield $i; } } $arr1 = [0, 1, 2, ...generator()];
も使用できますが、参照渡しは許可されません。次の例を考えてみましょう:$arr1 = ['red', 'green', 'blue'];
$arr2 = [...&$arr1];
参照渡ししようとすると、PHP は次の解析エラーをスローします:
Parse error: syntax error, unexpected '&' in /app/spread-operator.php on line 3
最初の配列の要素が参照によって格納されている場合、それらは2 番目の配列にも参照によって格納されます。以下は例です:
$arr0 = 'red'; $arr1 = [&$arr0, 'green', 'blue']; $arr2 = ['white', ...$arr1, 'black'];
これは PHP 7.4 で得られるものです:
array(5) { [0]=> string(5) "white" [1]=> &string(3) "red" [2]=> string(5) "green" [3]=> string(4) "blue" [4]=> string(5) "black" }Arrow Functions 2.0 (ショート クロージャ)
PHP で、匿名関数は非常に冗長で、実装と保守が難しいと考えられています。 RFC コードを簡潔に記述できるように、より単純で明確なアロー関数 (または短いクロージャー) 構文を導入することをお勧めします。
PHP 7.4 より前: function cube($n){
return ($n * $n * $n);
}
$a = [1, 2, 3, 4, 5];
$b = array_map('cube', $a);
print_r($b);
PHP 7.4 ではより簡潔な構文が使用できるため、上記の関数は次のように書き換えることができます:
$a = [1, 2, 3, 4, 5]; $b = array_map(fn($n) => $n * $n * $n, $a); print_r($b);
現在、言語構造により、
匿名関数(クロージャ) は、以下に示すように、 use を使用して、親スコープで定義された変数を継承できます。
$factor = 10; $calc = function($num) use($factor){ return $num * $factor; };
ただし、PHP 7.4 では、親スコープの値が暗黙的にキャプチャされます (暗黙的に)。値のスコープによって制限されます)。したがって、この関数は 1 行で完了できます: $factor = 10;
$calc = fn($num) => $num * $factor;
親スコープで定義された変数はアロー関数に使用できます。これは use の使用と同等であり、親によって変更することはできません。
新しい構文により、より読みやすく保守しやすいコードを構築できるため、言語が大幅に改善されました。
NULL 合体演算子日常の使用では三項式と isset() が同時に使用される状況が多数あるため、NULL 合体演算子 (? ?) この糖衣構文。変数が存在し、NULL でない場合はそれ自体の値を返し、それ以外の場合は 2 番目のオペランドを返します。 $username = $_GET['user'] ?? ‘nobody';
このコードの動作は非常に単純です。リクエスト パラメータを取得し、存在しない場合はデフォルト値を設定します。しかし、この RFC の例では、変数名が長い場合はどうなるでしょうか?
$this->request->data['comments']['user_id'] = $this->request->data['comments']['user_id'] ?? 'value';
长远来看,这段代码可能难以维护。因此,旨在帮助开发人员编写更直观的代码,这个 RFC 建议引入 null 合并等于运算符 (null_coalesce_equal_operator)??=,所以我们可以敲下面这段代码来替代上面的这段代码:
$this->request->data['comments']['user_id'] ??= ‘value’;
如果左侧参数的值为 null,则使用右侧参数的值。
注意,虽然 coalesce 运算符 ?? 是一个比较运算符,但 ??= 它是赋值运算符。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

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

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ホットトピック









