目次
never意味はありませんか?
実際のユースケース
1。エラーと例外ヘルパー
2。HTTPリダイレクトと応答の終了
3。アサーションの障害
never使用しないことの利点
制限とメモ
まとめ
ホームページ バックエンド開発 PHPチュートリアル 最新のPHPで「never` return」タイプで実行フローを制御する

最新のPHPで「never` return」タイプで実行フローを制御する

Aug 08, 2025 pm 06:17 PM
PHP Functions

PHP 8.1のNever Return Typeは、例外をスローするか、スクリプトを終了することにより、関数が発信者に戻らないことを明示的に示します。 1.エラーハンドラー、リダイレクト、および通常は戻らないアサーション障害などの関数をマークすることにより、コードの明確さを強化し、より良い静的分析を可能にします。 2。実用的な用途には、fail()、redirect()、assertionfailed()などの関数が含まれます。 3.利点には、バグ検出の改善、より明確な開発者の意図、より安全なロジックが含まれますが、制限により、返品の声明や価値、null、誤用の結果が致命的なエラーが発生します。関数が本当に戻らない場合は、常に使用しないでください。

最新のPHPで「never` return」タイプを使用して実行フローを制御する

現代のPHP、特にPHP 8.1以降、 never Return Typeは、関数または方法が発信者に制御を返さないことを明示的に信号する強力な方法を提供します。これは、常に例外をスローするか、エラーハンドラー、リダイレクト、またはアサーションの障害など、実行を終了する機能に役立ちます。

最新のPHPで「never` return」タイプを使用して実行フローを制御する

使用するneverコードの透明度が向上し、静的アナライザーがバグをキャッチし、他の開発者に意図を明確にするのに役立ちます。


never意味はありませんか?

never Return Typeは、関数を示しています。

最新のPHPで「never` return」タイプを使用して実行フローを制御する
  • 正常に戻りません
  • 例外をスローするか、スクリプトを終了します(例: exitまたはdieを介して)。

「何も返さない」という意味とはvoid 、「戻ってくることさえしない」という意味でnever

 function fail(string $ message):決して
{
    新しい例外をスロー($メッセージ);
}

fail()が呼び出されると、プログラムフローは例外または終了によって停止します。

最新のPHPで「never` return」タイプを使用して実行フローを制御する

実際のユースケース

1。エラーと例外ヘルパー

例外をスローするためにのみ存在する関数は、 neverから利益を得ません。

機能しない():決して
{
    新しいlogicexceptionを投げます( 'このコードに到達してはいけません。');
}

function invalidargument(string $ name):never
{
    新しいinvalidargumentException({$ name}の無効な値。 ");
}

これにより、誤って到達可能であると誤って想定されることから、偶発的なコードが防止されます。

2。HTTPリダイレクトと応答の終了

Webアプリケーションでは、リダイレクト関数はしばしば実行を終了します。

関数Redirect(String $ URL):決して
{
    ヘッダー( "場所:$ url");
    出口();
}

次に、 redirect()を呼び出すスクリプトを明確に終了します。さらにコードは実行されません。

3。アサーションの障害

カスタムアサーションを使用する場合:

関数assertisString(mixed $ value):void
{
    if(!is_string($ value)){
        assertionfailed( 'expects string');
    }
}

function assertionfailed(string $ message):never
{
    新しいassertionerror($ message)を投げる;
}

これにより、ツールは、アサーションが失敗した場合、機能の残りの部分が到達できないことを理解するのに役立ちます。


never使用しないことの利点

  • より良い静的分析:phpstanや詩編などのツールは、到達不可能なコードまたはロジックエラーを検出できます。
  • より明確な意図:他の開発者は、関数が返されないことを知っています。
  • より安全なコード:制御フローに関する偶発的な仮定を防ぎます。

例えば:

関数分裂(int $ a、int $ b):フロート
{
    if($ b === 0){
        新しいDivisionByzeroError();
    }
    $ a / $ bを返します。
}

ここでは、例外がスローされますが、 never静的分析は確信していません。しかし、私たちがそれを抽出する場合:

関数分裂(int $ a、int $ b):フロート
{
    if($ b === 0){
        DivisionByzero();
    }
    $ a / $ bを返します。
}

function divisionbyzero():決して
{
    新しいDivisionByzeroError();
}

これで、アナライザーは$b !== 0場合にのみreturnに達することがわかります。


制限とメモ

  • never機能から値を返すことはできませnull
  • 戻ることはできませんreturn;ステートメント( void関数で許可されています)。
  • 関数が本当に戻らない場合にのみ有効です。それを誤用すると、致命的なエラーが発生します。
 function badexample():決して
{
    戻る; //致命的なエラー:Never Return Typeを持つ関数は戻ってはいけません
}

また、機能が適切に入力されていない限り、 never関数を呼び出すことはアナライザーに自動的に通知されません。だから、常に使用し: never


まとめ

never Return Typeは、PHPのタイプシステムに小さいながらも衝撃的な追加です。それは理想的です:

  • 常に例外をスローする関数
  • 終了ヘルパー(リダイレクトなど)
  • アサーションまたは到達不可能なコードマーカー

never使用することで、ツールや人間が理解しやすく、コードをより予測可能で、より安全で、簡単にします。

基本的に:関数が戻ってこない場合は、PHPにneverそれを伝えてください。

以上が最新のPHPで「never` return」タイプで実行フローを制御するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

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の再帰関数で複雑な問題を解決します PHPの再帰関数で複雑な問題を解決します Aug 02, 2025 pm 02:05 PM

再帰関数は、PHPの複雑な問題を解決するための効果的な方法であり、特にネストされたデータ、数学的計算、および自己類似構造を備えたファイルシステムトラバーサルの処理に適しています。 1.ネストされた配列またはメニュー構造の場合、再帰は任意の深さに自動的に適応し、基底の例(空の子供)を介して終了し、レイヤーごとに拡張できます。 2.要因とフィボナッチ配列を計算する場合、再帰は直感的に数学的定義を実装しますが、素朴なフィボナッチにはパフォーマンスの問題があり、記憶を通じて最適化できます。 3.ディレクトリを通過する場合、再帰は任意のレベルのサブディレクトリに侵入する可能性がありますが、これは反復よりも簡単ですが、スタックオーバーフローのリスクに注意を払う必要があります。 4.再帰を使用する場合、基本ケースに到達可能であることを確認し、無限の呼び出しを避け、深さが大きい場合は、パフォーマンスと安定性を改善するために反復または明示的なスタック置換を使用することを検討する必要があります。したがって、問題に「それ自体が小さい」が含まれている場合

PHPのパスバイレファレンスの理解:パフォーマンスと落とし穴 PHPのパスバイレファレンスの理解:パフォーマンスと落とし穴 Aug 03, 2025 pm 03:10 PM

パスバイバイレファレンスインフロスポーパフォーマンスとlaRgearraysorobjeatsdueTocopy-on-writeandobjecthandles、soitshould-by-referenation-by-referenation by-referenationly-whenyouneedtomodifyorigaluauseabulaiable by-usepassonly-whenyouneedodifyorueは、duulturnulturneTurturneTurturinturinturinturinturinturnulを提供する可能性があります

PHP閉鎖のマスターと語彙スコーピングの「使用」キーワード PHP閉鎖のマスターと語彙スコーピングの「使用」キーワード Aug 01, 2025 am 07:41 AM

PhpClosures withtheUsewwordENABLELEXCOPINGBYCAPTURINGVARIABLESBARIABLESCOPE.1.CLOSURESAREANONMOUSFUNCTIONSTITSTATCASSEXTERNALVARIABLESVIAUSE.2.BYDEFALUALT、variablesInuseArepassedByValue;

コールバックの進化:PHP 8.1のファーストクラスコール可能な構文 コールバックの進化:PHP 8.1のファーストクラスコール可能な構文 Aug 03, 2025 am 10:00 AM

php8.1didnotintroducefirst-classcallablesyntax; thisfeatureis compondinphp8.4.1.priortophp8.4、callbackSusedStrings、array、orclos ures、whitheerror-andlackedidesupport.2.php8.1は、エコソシステムウィットナム、繊維、andbettertypingbutdidnotchangecallaを改善しました

`__invoke`マジックメソッドを使用してPHPで呼び出し可能なオブジェクトを作成する `__invoke`マジックメソッドを使用してPHPで呼び出し可能なオブジェクトを作成する Aug 06, 2025 am 09:29 AM

the__ invokemagicmethodinpallowsanobjectobecalledasafunction、enableingittoactlikeacallable.2.itis definedautisAndAutisedwhentheobjectisInvokedWithwithSeSaNdargument.3.

PHPで関数過負荷をシミュレートするための手法 PHPで関数過負荷をシミュレートするための手法 Aug 03, 2025 pm 01:12 PM

PHPは、JavaやCのような関数の過負荷をサポートしていませんが、さまざまな手法でシミュレートできます。 1.パラメーターのデフォルト値を設定することにより、デフォルトのパラメーターとオプションパラメーターを使用して、異なる呼び出し方法を実現します。 2。変数長パラメーターリスト(...演算子など)を使用して、パラメーターの数に応じて異なるロジックを実行します。 3.関数内でタイプチェックを実行し、パラメータータイプに従って動作を変更します。 4. PHP8の名前付きパラメーターを使用して、明示的な命名と読みやすさを改善することにより、オプションのパラメーターをスキップします。 5.パラメーターモード分布に基づいて、複雑なシナリオに適したパラメーターの数とタイプを判断することにより、異なる処理関数へのルート。これらの方法にはトレードオフがあり、明確で保守可能なコードを確保するための実際のニーズに従って選択する必要があります。

状態の持続性のための関数内の静的変数を活用します 状態の持続性のための関数内の静的変数を活用します Aug 14, 2025 pm 10:46 PM

staticVariablesInsidisidisidedisivebetweencalls、初期化された装備の際に、forthunctionfuncreativefunctionscoped.2.theyareusefulforclunctioncallcounts、cachingresorults、andmentingenerators、asseenincandphpexamples。

PHPジェネレーターと `evelo'キーワードを使用したメモリ効率の高い反復 PHPジェネレーターと `evelo'キーワードを使用したメモリ効率の高い反復 Aug 03, 2025 am 01:38 AM

PHPジェネレーターを使用してキーワードを獲得して、メモリオーバーフローを防ぐために大きなデータセットを効果的に処理します。 1.ジェネレーターは、降伏値による怠zyな評価を実現し、一度にメモリに1つの値のみを残します。 2。ラインごとのFGETを使用するなど、ラインごとのラインごとの読み取り、ラインまたはCSVファイルの処理などのシナリオに適しています。 3.キー価値ペアの出力をサポートし、キー名を明示的に指定します。 4.メモリフットプリントが低い、簡潔なコード、およびforeachとのシームレスな統合の利点があります。 5.しかし、巻き戻しができない、ランダムアクセスをサポートできず、再利用できず、反復を実行する前に再作成する必要があるなどの制限があります。したがって、大量のデータを通過する必要がある場合、ジェネレーターの使用が優先される必要があります。

See all articles