PHP 7.0 の新機能の簡単な紹介

Jun 16, 2017 am 10:21 AM

この記事では主に PHP 7.0 で新しく追加された機能を紹介します。必要な方は参考にしてください

?? 演算子 (NULL マージ演算子) 非常に便利だと思うので最初に置きました。使用法: $a = $_GET['a'] ?? 1; これは次と同等です:

?? 演算子 (NULL 合体演算子)

便利だと思うので最初に入れておきます。使用法:

$a = $_GET['a'] ?? 1; 次と同等です: $a = $_GET['a'] ?? 1; 它相当于:

<?php $a = isset($_GET[&#39;a&#39;]) ? $_GET[&#39;a&#39;] : 1; 我们知道三元运算符是可以这样用的:

$a ?: 1 但是这是建立在 $a 已经定义了的前提上。新增的 ?? 运算符可以简化判断。

1.函数返回值类型声明

官方文档提供的例子(注意 ... 的边长参数语法在 PHP 5.6 以上的版本中才有):

这种声明的写法有些类似于 Swift:

func sayHello(personName: String) -> String { let greeting = "Hello, " + personName + "!" return greeting } 这个特性可以帮助我们避免一些 PHP 的隐式类型转换带来的问题。在定义一个函数之前就想好预期的结果可以避免一些不必要的错误。</p> <p>不过这里也有一个特点需要注意。PHP 7 增加了一个 declare 指令:strict_types,既使用严格模式。</p> <p>使用返回值类型声明时,如果没有声明为严格模式,如果返回值不是预期的类型,PHP 还是会对其进行强制类型转换。但是如果是严格模式, 则会出发一个 TypeError 的 Fatal error。</p> <p><strong>强制模式:</strong></p> <p><code><?php function foo($a) : int { return $a; } foo(1.0);

<?php $a = isset($_GET['a' ] ) ? $_GET['a'] : 1; 三項演算子は次のように使用できることがわかっています:

$a ?: 1 ただし、これは $a が定義されていることを前提としています。新しい ?? 演算子により判断が簡略化されます。

1. 関数の戻り値の型宣言

公式ドキュメントで提供される例 (注意...辺の長さのパラメータ構文は PHP 5.6 以降でのみ使用可能です):

このステートメントの記述方法は Swift に似ています: funcsayHello(personName:String) ->String { letgreeting = "Hello, " + personName + "!" この機能は、PHP の暗黙的な型変換によって引き起こされるいくつかの問題を回避するのに役立ちます。関数を定義する前に期待される結果について考えると、不要な間違いを避けることができます。 しかし、ここで注意が必要な機能もあります。 PHP 7 では、strict モードを使用する宣言ディレクティブである strict_types が追加されています。

戻り値の型宣言を使用する場合、厳密モードで宣言されていない場合、戻り値が期待される型でない場合でも、PHP はそれに対してキャスト型変換を実行します。ただし、strict モードの場合は、TypeError の Fatal エラーがトリガーされます。

強制モード:

<?php function foo($a) : int { return $a; } foo(1.0); 上記のコードは正常に実行できます。関数はエラーなしで int 1 を返します。 <p class="jb51code"></p> <p>厳密モード: </p> <p></p> <p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&lt;?php declare(strict_types=1); function foo($a) : int { return $a; } foo(1.0);</pre><div class="contentsignin">ログイン後にコピー</div></div><span style="color: #ff0000"><strong></strong>PHP 致命的エラー: キャッチされません TypeError: foo() の戻り値は、test.php:6 で返される整数型、浮動小数点型である必要があります</span><br/>宣言後、致命的なエラーが発生します。 </p><p>js の strict モードに似ていますか? </p><p class="jb51code"></p><p>スカラー型宣言</p><p></p><p><span style="color: #ff0000"> PHP 7 の関数の仮パラメータ型宣言をスカラーにできるようになりました。 PHP 5 では、クラス名、インターフェイス、配列、または呼び出し可能なもののみにすることができます (PHP 5.4 では、匿名関数を含む関数にすることもできます)。文字列、int、float、bool も使用できるようになりました。 <strong></strong></span>公式の例: <br/></p><p></p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&lt;?php // Coercive mode function sumOfInts(int ...$ints) { return array_sum($ints); } var_dump(sumOfInts(2, &amp;#39;3&amp;#39;, 4.1));</pre><div class="contentsignin">ログイン後にコピー</div></div><p><span style="color: #ff0000"><strong> 上記の厳密モードの問題がここにも当てはまることに注意してください: 強制モード (デフォルト、強制型変換) では、変換されない問題が依然として存在します。パラメータは強制的に型変換され、重大な TypeError エラーが厳密モードでトリガーされます。 </strong></span></p><p>1.バッチ宣言を使用する</p>🎜🎜🎜🎜 PHP 7 では、複数のクラス、関数、または const を 1 つの文で宣言できます: 🎜🎜🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&lt;?php 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}; 但还是要写出每个类或函数或 const 的名称(并没有像 Python 一样的 from some import * 的方法)。</pre><div class="contentsignin">ログイン後にコピー</div></div>🎜🎜🎜 注意する必要がある問題は次のとおりです。使用 Composer と PSR-4 をベースにしたフレームワークですが、この書き方でクラスファイルを正常に読み込むことができますか?実際、composer によって登録されたオートロード メソッドは、クラスが呼び出されたときにクラスの名前空間に従って場所を検索します。この書き方は影響しません。 🎜🎜🎜🎜その他の機能🎜🎜🎜🎜🎜その他の機能については一つずつ紹介しませんので、興味があれば公式ドキュメントを確認してください: http://php.net/manual/en/migration70.new -features.php 🎜🎜🎜🎜 いくつかについて簡単に説明します。 🎜🎜🎜🎜 PHP 5.3 は匿名関数で始まり、現在では、define に定数配列を定義できるようになりました。 iterator の方が適切です)、最終的な戻り値 (return) を持つことも、yield from の新しい構文を通じて別のジェネレーター (ジェネレーター デリゲート) を入力することもできます。 ジェネレーターの 2 つの新しい機能 (return と yield from) を組み合わせることができます。特定の外観を自分でテストできます。 PHP 7 は現在 RC5 であり、最終バージョンは間もなく公開される予定です。 🎜</p>

以上がPHP 7.0 の新機能の簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

php7.0 にプラグインがインストールされているのに、まだインストールされていないと表示される場合はどうすればよいですか? php7.0 にプラグインがインストールされているのに、まだインストールされていないと表示される場合はどうすればよいですか? Apr 02, 2024 pm 07:39 PM

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

PHP 8.3 リリース: 新機能の概要 PHP 8.3 リリース: 新機能の概要 Nov 27, 2023 pm 12:52 PM

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

PHP8 の新機能を学び、最新テクノロジーを深く理解するためのガイド PHP8 の新機能を学び、最新テクノロジーを深く理解するためのガイド Dec 23, 2023 pm 01:16 PM

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

PHP サーバー環境 FAQ ガイド: 一般的な問題を迅速に解決する PHP サーバー環境 FAQ ガイド: 一般的な問題を迅速に解決する Apr 09, 2024 pm 01:33 PM

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

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

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

php8の新機能は何ですか php8の新機能は何ですか Sep 25, 2023 pm 01:34 PM

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

Docker環境にPECLを使用して拡張機能をインストールするときにエラーが発生するのはなぜですか?それを解決する方法は? Docker環境にPECLを使用して拡張機能をインストールするときにエラーが発生するのはなぜですか?それを解決する方法は? Apr 01, 2025 pm 03:06 PM

エラーの原因とソリューションPECLを使用してDocker環境に拡張機能をインストールする場合、Docker環境を使用するときに、いくつかの頭痛に遭遇します...

php8 と php7 ではどちらが優れていますか? php8 と php7 ではどちらが優れていますか? Nov 16, 2023 pm 03:09 PM

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

See all articles