目次
2. 関数の戻り値の型宣言
3. 标量类型声明
4. use 批量声明
ホームページ バックエンド開発 PHPチュートリアル php7 の新しいスカラー、演算子、および戻り値の型機能の詳細な説明

php7 の新しいスカラー、演算子、および戻り値の型機能の詳細な説明

Jun 27, 2017 am 10:19 AM
php php7 オペレーター

1. ?? 演算子 (NULL 結合演算子)

$a = $_GET['a'] ?? 1;
ログイン後にコピー

と同等です:

$a = empty($_GET['a']) ? 1 : $_GET['a'];
ログイン後にコピー

三項演算子演算子は次のように使用できることがわかっています:

$a ?: 1
ログイン後にコピー

ただし、これはすでに $a に基づいています。定められた前提の上で。新しい ?? 演算子により判断が簡略化されます。コードが簡素化され、同時により直感的になりました。

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

公式ドキュメントで提供されている例 (... の辺の長さパラメーターの構文は PHP 5.6 以降でのみ使用できることに注意してください): ... 的边长参数语法在 PHP 5.6 以上的版本中才有):

<?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]));
ログイン後にコピー

从这个例子中可以看出现在函数(包括匿名函数)都可以指定返回值的类型。

这个特性可以帮助我们避免一些 PHP 的隐式类型转换带来的问题。在定义一个函数之前就想好预期的结果可以避免一些不必要的错误。

不过这里也有一个特点需要注意。PHP 7 增加了一个 declare 指令:strict_types,既使用严格模式。

使用返回值类型声明时,如果没有声明为严格模式,如果返回值不是预期的类型,PHP 还是会对其进行强制类型转换。但是如果是严格模式, 则会出发一个 TypeError 的 Fatal error。

强制模式:

<?php
function foo($a) : int
{
    return $a;
}

foo(1.0);
ログイン後にコピー

以上代码可以正常执行,foo 函数返回 int 1,没有任何错误。

严格模式:

<?php
declare(strict_types=1);

function foo($a) : int
{
    return $a;
}

foo(1.0);
ログイン後にコピー

在声明之后,就会触发致命错误。

# PHP Fatal error:  Uncaught TypeError: Return value of foo() must be of the type integer, float returned in test.php:6
ログイン後にコピー

3. 标量类型声明

PHP 7 中的函数的形参类型声明可以是标量了。在 PHP 5 中只能是类名、接口、array 或者 callable (PHP 5.4,即可以是函数,包括匿名函数),现在也可以使用 stringintfloatbool 了。

<?php
// Coercive mode
function sumOfInts(int ...$ints)
{
    return array_sum($ints);
}

var_dump(sumOfInts(2, &#39;3&#39;, 4.1));
ログイン後にコピー

需要注意的是上文提到的严格模式的问题在这里同样适用:强制模式(默认,既强制类型转换)下还是会对不符合预期的参数进行强制类型转换,严格模式下则触发 TypeError 的致命错误。

4. use 批量声明

PHP 7 中 use 可以在一句话中声明多个类或函数或 const 了:

<?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 * 的方法)。

需要留意的问题是:如果你使用的是基于 composer 和 PSR-4 的框架,这种写法是否能成功的加载类文件?其实是可以的,composer 注册的自动加载方法是在类被调用的时候根据类的命名空间去查找位置,这种写法对其没有影响。

再来简单说几个:

1、PHP 5.3 开始有了匿名函数,现在又有了匿名类了;

2、define 现在可以定义常量数组;

3、闭包( Closure)增加了一个 call 方法;

4、生成器(或者叫迭代器更合适)可以有一个最终返回值(return),也可以通过 yield from 的新语法进入一个另外一个生成器中(生成器委托)。

生成器的两个新特性(return 和 yield fromrrreee

よりこの例では、すべての関数 (匿名関数🎜 を含む) で戻り値の型を指定できることがわかります。 🎜🎜この機能は、PHP の暗黙的な型変換🎜の問題の一部を回避するのに役立ちます。 関数を定義🎜する前に、予想される結果について考えると、不要なエラーを回避できます。 🎜🎜しかし、ここで注意が必要な機能もあります。 PHP 7 では、strict モードを使用する declare ディレクティブ strict_types が追加されています。 🎜🎜戻り値の型宣言を使用する場合、厳密モードで宣言されていない場合、戻り値が期待される型でない場合でも、PHP はそれに対してキャスト型変換を実行します。ただし、厳密モードの場合、TypeError の致命的エラーがトリガーされます。 🎜🎜強制モード: 🎜rrreee🎜 上記のコードは正常に実行でき、foo 関数はエラーなしで int 1 を返します。 🎜🎜厳密モード: 🎜rrreee🎜宣言後、致命的なエラーがトリガーされます。 🎜rrreee🎜3. スカラー型宣言🎜🎜 PHP 7 の関数の仮パラメータ型宣言はスカラーにすることができます。 PHP 5 では、クラス名、インターフェイス、array、または callable のみを指定できます (PHP 5.4 では、匿名関数を含む関数も指定できます)。 stringintfloat、および bool を使用します。 🎜rrreee🎜上記の厳密モードの問題がここでも適用されることに注意してください。強制モード (デフォルトでは強制型変換) では、厳密モードの期待を満たさないパラメーターに対しても強制型変換が実行されます。場合、TypeError の致命的エラーが発生します。 🎜🎜4. バッチ宣言を使用する🎜🎜 PHP 7 では、複数のクラス、関数、または const を 1 つの文で宣言できます: 🎜rrreee🎜 ただし、依然として各クラス、関数、または const の名前を書き出す必要があります (Python とは異なります)。一部の import * メソッドの と同じです)。 🎜🎜注意する必要がある質問は、composer と PSR-4 に基づくフレームワークを使用している場合、この記述方法でクラス ファイルを正常にロードできるかということです。実際、composer によって登録された<a href="http://www.php.cn/php/php-tp-upload.html" target="_blank">自動読み込みメソッドは、クラスがクラスの </a><a href="http://www.php.cn/wiki/220.html" target="_blank"> 名前空間 🎜 に従って場所を見つけます。この書き方は影響しません。 。 🎜🎜もう少し簡単に説明しましょう: 🎜🎜1. PHP 5.3 には匿名関数が追加されました。🎜🎜2. クロージャが追加されました。メソッド; 🎜🎜4. ジェネレーター (またはイテレーターのほうが適切です) は最終的な戻り値 (return) を持つことも、<code>yield from (ジェネレーター デリゲート) の新しい構文を通じて別のジェネレーターに入ることができます。 🎜🎜ジェネレーターの 2 つの新しい機能 (return と yield from) を組み合わせることができます。詳細については、ご自身でテストしてください。 🎜

以上がphp7 の新しいスカラー、演算子、および戻り値の型機能の詳細な説明の詳細内容です。詳細については、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)

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHP対その他の言語:比較 PHP対その他の言語:比較 Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

See all articles