PHP 7.x の各バージョンの新機能の紹介
推奨 (無料): PHP7
PHP 7.x それぞれバージョンの新機能
まえがき
先月、私の同僚が私が
$a = $a ?? '';
を書いているのを見て、その書き方について尋ねました。そしてこれも好きです どうやって書くのですか?これはPHP7以降でのみ使える書き方だと言いましたが、わかりませんか?彼は知らないと言った。
心の中でそうつぶやいて、このブログを書き始めようと思った。
PHP7 は、基本に加えて最新の PHP である必要があります。 PHP7 では、強力な型定義と、結合された比較演算子などの一部の文法的な記述方法により、define() で配列やその他の機能を定義できるためです。以下、PHP7.0から正式導入となりますが、今後も新しいバージョンが追加され、順次追加されていく予定です。
OK、始めましょう
PHP 7.0
スカラー型宣言
スカラー型とは何ですか?
4 つのスカラー型:
boolean (ブール型)
integer (整数型)
float (浮動小数点型、double とも呼ばれます)
string (文字列)
2 つの複合タイプ:
array (配列)
object (オブジェクト)
Resource は、外部リソースへの参照を保持する特別な変数です。リソースは、特殊な機能を通じて作成および使用されます。リソース タイプ変数は、ファイル、データベース接続、グラフィック キャンバス領域などを開くための特別なハンドルです。
より簡単に言うと、スカラー型は変数を定義するデータ型です。
php5 には、クラス名、インターフェイス、配列、コールバック関数があります。 PHP では、文字列、整数、浮動小数点数、およびブール値が追加されました。以下の例を見てみましょう。すべての例を参照してください
function typeInt(int $a){ echo $a;}typeInt('sad');// 运行,他讲会报错 Fatal error: Uncaught TypeError: Argument 1 passed to type() must be of the type integer, string given
ここでは、$a が int 型である必要があると定義しています。type 関数に文字列が渡されると、エラーが報告されます。上記のコードを修正してみましょう。
function typeString(string $a){ echo $a;}typeString('sad'); //sad
戻り値の型宣言
関数のメソッドの戻り値を定義できます。たとえば、私の特定の関数は次の値を返す必要があります。 int型の場合は必ずintを返しますが、stringを返す場合はエラーとなります。次のように
<?phpfunction returnArray(): array{ return [1, 2, 3, 4];}print_r(returnArray());/*Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) */
配列を定義して文字列または他の型を返すとどうなるでしょうか?
その後、彼は エラーを報告します例
function returnErrorArray(): array { return '1456546'; } print_r(returnErrorArray()); /* Array Fatal error: Uncaught TypeError: Return value of returnArray() must be of the type array, string returned in */
null マージ演算子
日常使用では 3 つの同時使用が多数発生します。 メタ式と isset() の場合、null 合体演算子 (??) の構文糖を追加します。変数が存在し、NULL でない場合はそれ自体の値を返し、それ以外の場合は 2 番目のオペランドを返します。
<?php $username = $_GET['user'] ?? 'nobody'; //这两个是等效的 当不存在user 则返回?? 后面的参数 $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; ?>
宇宙船オペレーター
// 整数echo 1 <=> 1; // 0 当左边等于右边的时候,返回0echo 1 <=> 2; // -1 当左边小于右边,返回-1echo 2 <=> 1; // 1 当左边大于右边,返回1// 浮点数echo 1.5 <=> 1.5; // 0echo 1.5 <=> 2.5; // -1echo 2.5 <=> 1.5; // 1 // 字符串echo "a" <=> "a"; // 0echo "a" <=> "b"; // -1echo "b" <=> "a"; // 1
define 配列の定義
PHP7 より前のバージョンでは、define は配列を定義できません。たとえば、
define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[1]; // 输出 "cat"
メソッドのバッチインポートを使用します
// PHP 7 之前的代码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+ 及更高版本的代码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};
echo "\u{aa}"; //ªecho "\u{0000aa}"; //ª echo "\u{9999}"; //香
<?phpinterface Logger { public function log(string $msg);}class Application { private $logger; public function getLogger(): Logger { return $this->logger; } public function setLogger(Logger $logger) { $this->logger = $logger; }}$app = new Application;$app->setLogger(new class implements Logger { //这里就是匿名类 public function log(string $msg) { echo $msg; }});
Nullable 型
パラメータと戻り値の型を渡すことができるようになりましたタイプ 空にするために、その前に疑問符を追加します。この機能が有効な場合、渡されるパラメーターまたは関数によって返される結果は、指定された型または null のいずれかになります。<?phpfunction testReturn(): ?string{ return 'elePHPant';}var_dump(testReturn()); //string(10) "elePHPant"function testReturn(): ?string{ return null;}var_dump(testReturn()); //NULLfunction test(?string $name){ var_dump($name);}test('elePHPant'); //string(10) "elePHPant"test(null); //NULLtest(); //Uncaught Error: Too few arguments to function test(), 0 passed in...
<?phpfunction swap(&$left, &$right) : void{ if ($left === $right) { return; } $tmp = $left; $left = $right; $right = $tmp;}$a = 1;$b = 2;var_dump(swap($a, $b), $a, $b);
#などvoidを返す型を追加しました。 ##この関数は日常の開発でよく使用されます
<?php try { // some code } catch (FirstException | SecondException $e) { //用 | 来捕获FirstException异常,或者SecondException 异常 }
#PHP 7.2
PHP7.2 は PHP7 シリーズの中で最も新しい機能ではありません#グループ化された名前空間で末尾のカンマを許可する たとえば、
<?phpuse Foo\Bar\{ Foo, Bar, Baz,};
抽象メソッドのオーバーライドを許可する
<?phpabstract class A{ abstract function test(string $s);}abstract class B extends A{ // overridden - still maintaining contravariance for parameters and covariance for return abstract function test($s) : int;}
新しいオブジェクト タイプ
<?phpfunction test(object $obj) : object //这里 可以输入对象{ return new SplQueue();}test(new StdClass());
PHP 7.3
PHP7.3 構文レベルでの大きな変更はありません。PHP 7.4
クラス属性の型宣言のサポート
PHP が強力な型付けに向けて新たな一歩を踏み出したことをおめでとうございます<?phpclass User { public int $id; public string $name;}?>
アロー関数
アロー関数は、暗黙的な値によるスコープ バインディングを使用して関数を定義するための短縮構文を提供します。これは JS の arrow 関数に似ていますが、fn が付いています。クレームの波<?php$factor = 10;$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);// $nums = array(10, 20, 30, 40);?>
Nullマージオペレータサポートメソッド
<?php$array['key'] ??= computeDefault();// 类似与这个if (!isset($array['key'])) { $array['key'] = computeDefault();}?>
以上がPHP 7.x の各バージョンの新機能の紹介の詳細内容です。詳細については、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)

ホットトピック

この記事では、session_start()、$ _session、session_destroy()、セキュアクッキー処理などのコア機能をカバーする効果的なPHP 7セッション管理について詳しく説明します。 HTTPS、セッションID再生、sなどのセキュリティベストプラクティスを強調しています

この記事では、New Relicを使用してPHP 7アプリケーションのパフォーマンスを監視する方法について説明します。 New Relicのセットアップ、APDEXスコアや応答時間などのキーパフォーマンスインジケーター(KPI)、トランザクショントレースを介したボトルネックの識別、エラートラックの詳細

この記事では、PHP 5.6をPHP 7にアップグレードし、バックアップ、サーバーの互換性のチェック、アップグレードメソッドの選択などの重要な手順(パッケージマネージャー、コンパイル、コントロールパネル、またはWebサーバーの構成)を強調しています。 ポテンティアに対処します

この記事では、SPL_AUTOLOAD_REGISTER()を使用してクラスをオンデマンドでロードするPHP 7のオートローディングについて説明します。 それは、名前空間ベースのオートローディングやパフォーマンスの最適化のためのキャッシュなどのベストプラクティスを詳述し、一般的な問題に対処します(例:クラスは見つかりません

この記事は、バージョンコントロールにGitを使用することについてPHP 7開発者をガイドします。 初期化、ステージング、コミット、ファイルの無視、リモートリポジトリ、分岐、マージ、競合解決、および重要なGITコマンドをカバーします。 効率のためのベストプラクティス

この記事では、PHP 7アプリケーションの展開、メソッド(FTP、SSH、展開ツール)、サーバー構成(APACHE/NGINX、PHP-FPM)、データベースのセットアップ、および重要なセキュリティに関する考慮事項をカバーする詳細を詳述しています。 Server Compatibなどの一般的な課題を強調しています

この記事では、PHP 7コードのデバッグにXdebugを使用する方法について説明します。 Xdebug構成(インストール、PHP.ini設定、IDEセットアップ)、ブレークポイント使用(条件、関数、リモート)、およびトラブルシューティング接続の問題をカバーします。 効果的なデビッジ

この記事では、PHP 7のオブジェクト指向プログラミング(OOP)について説明し、モジュール性、再利用可能性、保守性、およびコード組織の改善を強調しています。 クラス、オブジェクト、継承、多型を詳述し、それらの使用を示しています
