PHP7 では、パフォーマンスが大幅に向上し、新機能が追加されたほか、以前のバージョンの一部の機能も改善されました。この記事は、PHP7 の新機能を理解し、議論するために役立ちます。
1.スカラー型宣言
PHP は型指定が弱いプログラミング言語であることがわかっているため、入力パラメーターと戻り値の型を指定するメソッドが提供されません。PHP7 はこの現状を打破し、スカラー型 (int、float) のサポートを追加します。 、string、bool) 宣言のサポート。厳密な型チェックを行うかどうかを宣言するためのdeclare(strict_types=1) 命令を追加します。コードの一部を見てみましょう:
declare(strict_types=1) function add(int $x, int $y) : int { return $x + $y; } echo add(1, 2); //int(7) declare(strict_types=1) function add(int $x, int $y) : int { return $x + $y; } echo add(1, 2); //int(7)
有効な型は次のとおりです: クラス/インターフェイス名、self、array、、callable 、 bool 、 float、 int および string。
2. NULL マージ演算子
NULL マージ演算子が PHP7 に追加されました。これを使用すると、パラメータが空の場合にデフォルト値を提供できるようになります。 。 ?? 演算子は、左側の値が存在し NULL でない場合はどのように左側を返しますか。それ以外の場合は右側の値が返されます。次のコードを通して、?? 演算子の威力を体験してみましょう。
<?php // 获取user参数的值(如果为空,则用'nobody') // PHP5中我们这样来实现: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // PHP7中,使用??运算符更便捷: $username = $_GET['user'] ?? 'nobody'; ??> <?php // 获取user参数的值(如果为空,则用'nobody') // PHP5中我们这样来实现: $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // PHP7中,使用??运算符更便捷: $username = $_GET['user'] ?? 'nobody'; ??>
3. 匿名クラス
名前が示すように、クラス名はなく、その宣言とインスタンス化は同時に、一部のクラスを置き換えるために使用できる新しいクラスによる匿名クラスのインスタンス化をサポートします。 「使用後に焼き付ける」クラス定義が完了しました。
echo (new class() { public function myMethod() { return "Hello!"; } })->myMethod(); //Result: Hello! echo (new class() { public function myMethod() { return "Hello!"; } })->myMethod(); //Result: Hello!
4. より多くのエラーが例外で処理可能になります
PHP7 では、より多くのエラーがキャッチ可能な例外となり、キャッチされなかった場合はエラーとして返されます。プログラム内で処理されます。デフォルトでは、Error は直接プログラムを中断させますが、PHP7 は try/catch ブロックを通じてエラーをキャプチャして処理し、プログラムの実行を継続できるようにして、プログラマにより柔軟なオプションを提供します。
コード例:
nonExistFunction($arg); // It will generate fatal error nonExistFunction($arg); // It will generate fatal error
この時点で、上記のコードは「致命的なエラー: 非オブジェクト上のメンバー関数メソッド() の呼び出し」というエラーを表示し、この致命的なエラーにより次の実行の継続が停止されます。コード。
そのため、コードの実行を継続したい場合は、例外処理を通じて解決できます:
try { nonExistFunction($arg); //This method is not exists then it will be go to catch } catch (EngineException $e ) { echo "Exception: {$e->getMessage()}n"; } try { nonExistFunction($arg); //This method is not exists then it will be go to catch } catch (EngineException $e ) { echo "Exception: {$e->getMessage()}n"; }
5. 比較演算子 <=> と組み合わせる
これにはあまり説明がありません。見てみましょう。サンプル コードを直接渡すと、コードを渡すことができます。この演算子が何を行うかは簡単にわかります。
// PHP 7之前的写法:比较两个数的大小 function func ( $ a , $ b ) { return ($a < $b) ? -1 : (($a > $b) ? 1 : 0) } // PHP新增的操作符 <=> function func ( $ a , $ b ) { return $a <=> $b; } // PHP 7之前的写法:比较两个数的大小 function func ( $ a , $ b ) { return ($a < $b) ? -1 : (($a > $b) ? 1 : 0) } // PHP新增的操作符 <=> function func ( $ a , $ b ) { return $a <=> $b; }
6. 配列定数を定義する
以前は、define() を使用して定数を定義していましたが、データ型はスカラーのみをサポートしていましたが、PHP7 では配列型の定数の定義をサポートします。
define('MYCONSTANT', array('a','b','c')); define('MYCONSTANT', array('a','b','c'));
今日は、これらを最初に紹介します。今後も更新を続けていきますので、一緒にコミュニケーションをとり、学び、進歩していきましょう。