目次
なぜ返すタイプが重要なのか
基本的な返品タイプ:文字列からオブジェクトまで
voidを使用する時期:何も返さない関数
ユニオンタイプを使用したオプションまたは複数のタイプの処理(PHP 8.0)
一般的な落とし穴とベストプラクティス
まとめ
ホームページ バックエンド開発 PHPチュートリアル 「Mixed」から「void」まで:PHPリターンタイプ宣言の実用的なガイド

「Mixed」から「void」まで:PHPリターンタイプ宣言の実用的なガイド

Jul 27, 2025 am 12:11 AM
PHP Data Types

PHPのリターンタイプは、関数が返さなければならないものを指定することにより、コードの信頼性と明確さを改善します。 2.文字列、配列、またはデータなどの基本タイプを使用して、正しい返品値を強制し、早期にエラーをキャッチします。 3.ヌル可能なタイプを適用しますか? (例、?文字列)nullが有効な返品値である場合。 4.データを返すことなくアクションを実行する関数にvoidを使用し、返品のみを許可します。または返品声明はありません。 5.複数の異なるタイプを返す関数のために、PHP 8.0のユニオンタイプ(例:string | int | bool)をレバレッジします。 6. IDEのサポートと保守性を高めるために、暗黙の混合よりも明示的なリターンタイプ宣言を好みます。 7.組合の種類を過剰に使用し、混合され、あらゆるタイプが本当に期待される場合の混合を予約しないでください。 8。fals for?intのnullにfalseを変換するなど、返品タイプを動作に合わせることにより、内部PHP関数を慎重に処理します。 9.技術的には許可されていても、混乱を防ぐためにvoid関数でnullを返さないでください。 10.コアロジックとAPIから始めて、読みやすさと意図を維持しながらコードをより予測可能にし、エラーが発生しないようにするために、徐々にリターンタイプを採用します。

「Mixed」から「void」まで:PHPリターンタイプ宣言の実用的なガイド

PHPのタイプシステムは、初期から大幅に進化しており、リターンタイプの宣言は、より予測可能で保守可能なコードを書くことの基礎です。明確な契約なしで文字列、配列、またはnullを緩めたPHP関数を緩やかに型付けしたことがある場合は、トレースが難しいバグに遭遇した可能性があります。それが戻りの種類が入ってくるところです。

「Mixed」から「void」まで:PHPリターンタイプ宣言の実用的なガイド

PHP 7.0から始めて、機能が返されるものを指定して、エンジンとチームメイトの両方がコードの意図を理解するのに役立ちます。このガイドでは、実用的な例とベストプラクティスを使用して、NOタイプ(常に明示mixedはありませんが、常に明示的ではありvoidんが、常に明示的ではありませんが)を使用することから説明します。


なぜ返すタイプが重要なのか

構文に潜る前に、なぜ返品タイプが役立つのかを理解する価値があります。

「Mixed」から「void」まで:PHPリターンタイプ宣言の実用的なガイド
  • 早めにバグをキャッチ:文字列を期待したら配列を返しますか? PHPはTypeRrorを投げます。
  • コードの読みやすさの向上:あなたの機能を読んでいる人は誰でも何を期待するかを知っています。
  • より良いIDEサポートを有効にする:オートコンプリート、リファクタリング、およびインラインドキュメントがより正確になります。
  • 意図的なデザインを奨励してください:あなたの機能が何を返すべきかについてもっと難しいと思います。

返品タイプがなければ、すべてが効果的にmixed - あらゆるタイプの値。柔軟ですが、これは不確実性につながります。返品タイプでそれを絞り込むことができます。


基本的な返品タイプ:文字列からオブジェクトまで

すべての一般的なタイプの返品タイプを宣言できます。

「Mixed」から「void」まで:PHPリターンタイプ宣言の実用的なガイド
関数getUsername():string {
    「アリス」を返します。
}

function getUserData():array {
    ['name' => 'alice'、 'age' => 30]を返します。
}

関数createdateTime():dateTime {
    new DateTime()を返します。
}

契約を破った場合:

関数getUsername():string {
    nullを返します。 //致命的なエラー:戻り値は型文字列でなければならず、nullは返されます
}

Nullableタイプを明示的に使用してnullを許可しない限り:

関数getUsername():?string {
    nullを返します。 //これは有効になりました
}

?プレフィックスは「このタイプまたはヌル」を意味します。


voidを使用する時期:何も返さない関数

関数がアクションを実行しますが、ロギング、印刷、または状態の変更など、意味のあるデータを返さない場合はvoidを使用します。

関数logmessage(string $ message):void {
    file_put_contents( 'log.txt'、$message。php_eol、file_append);
    //返品ステートメントは必要ありません
}

または明示的なreturn;

 function abortifnotadmin(user $ user):void {
    if(!$ user-> isadmin()){
        die( 'アクセス拒否');
    }
    戻る; //オプションですが、許可されています
}

voidの重要なルール:

  • 値を返すことはできません: return 5; →致命的なエラー。
  • return;価値は許可されていません(戻ってこないのと同じ)。
  • nullも有効な返品値ではありません。

これにより、「この関数は何かをしますが、何もしません。」


ユニオンタイプを使用したオプションまたは複数のタイプの処理(PHP 8.0)

PHP 8.0の前に、「これは文字列またはブールを返す」を表現できませんでした。今、あなたはできます:

 function finduser(int $ id):?user {
    //ユーザーまたはnullを返します
}

組合タイプでさらに良い:

 function processinput($ input):string | int | bool {
    if($ input === ''){
        falseを返します。
    }
    if(is_numeric($ input)){
        return(int)$ input;
    }
    return trim($ input);
}

これにより、リターン契約は、文書化されていないmixedとして残すのではなく、明示的になります。

?ヒント:組合タイプの過剰使用を避けてください。関数があまりにも多くのタイプを返している場合は、あまりにも多くのことをしているかどうかを検討してください。


一般的な落とし穴とベストプラクティス

注意すべきことがいくつかあります:

  • そのためだけにタイプを追加しないでください
    すべてのヘルパーではなく、クリティカル関数(API、コアロジック)から始めます。

  • 内部PHP関数には注意してください
    障害時にfalseを返すもの(例: strpos() )。期待の一致:

    関数FindPosition(String $ HayStack、String $ edele):?int {
        $ pos = strpos($ haystack、$ edele);
        $ $ pos === falseを返しますか? null:$ pos;
    }

    これで、返品タイプは?intint|falseより明確です。

  • 意図的にmixed使用する(PHP 8.0)
    関数が真に任意のタイプを受け入れるか返す場合は、 mixed使用してください。

     function debugprint(mixed $ value):void {
        var_dump($ value);
    }

    これは、タイプのヒントがまったくないよりも優れています。

  • return null; void関数で
    許可されていますが、読者を混乱させることができます。早めに終了しない限り、 returnを省略します。


  • まとめ

    Untyped( mixed By Convention)から裕福な機能に移行すると、PHPコードがより堅牢になります。

    • 返品値を知っている場合は、特定のタイプ( stringarrayUser )を使用します。
    • nullが有効な応答である場合?Type使用します。
    • 副作用のみの関数にはvoidを使用します。
    • 複数のタイプが予想される場合は、ユニオンタイプ( string|int )を使用します。
    • 控えめに、意図的にmixed使用します。

    目標は、すべてを最大限に入力することではなく、コードの動作をより明確にし、エラーが発生しないようにすることです。

    基本的に:関数が返品タイプを約束する場合は、その約束を維持していることを確認してください。 PHPはあなたがそれを実施するのに役立ちます。

    以上が「Mixed」から「void」まで:PHPリターンタイプ宣言の実用的なガイドの詳細内容です。詳細については、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の二重性:ゆるいタイピングと厳密なタイプの宣言のナビゲート Jul 26, 2025 am 09:42 AM

PHPは、ゆるいタイプと厳格なタイプの共存をサポートします。これは、スクリプト言語から最新のプログラミング言語への進化の中心的な特徴です。 1.ゆるいタイプは、迅速なプロトタイピング、動的なユーザー入力の処理、または外部APIでのドッキングに適していますが、暗黙のタイプ変換のリスク、デバッグの難しさ、ツールサポートの弱いなどの問題があります。 2。decrare(strict_types = 1)で厳密なタイプが有効になります。これは、事前にエラーを検出し、コードの読みやすさとIDEサポートを改善することができ、コアビジネスロジック、チームコラボレーション、データの整合性の高い要件を備えたシナリオに適しています。 3。実際の開発で混合使用を使用する必要があります。デフォルトでは厳密なタイプが有効になり、緩いタイプは入力境界で必要な場合にのみ使用され、検証とタイプ変換はできるだけ早く実行されます。 4.推奨されるプラクティスには、PHPSTAの使用が含まれます

PHP 8のユニオンタイプでコードベースを近代化します PHP 8のユニオンタイプでコードベースを近代化します Jul 27, 2025 am 04:33 AM

upgradephp7.xcodebasestophp8 byreplacingphpdoc-suggestedtypeslike@paramstring | intwithnativeuniontypessuchasstring | intforparametersandreturntypes、whithemprovestypeSafetyandclarity;

精度の危険:PHPの浮動小数点数を処理します 精度の危険:PHPの浮動小数点数を処理します Jul 26, 2025 am 09:41 AM

0.1 0.2!== 0.3inphpduetobinary floating-precisionlimitations、sodevelopersmustavoiddirectcomparisonsandusepsilonベースのチェック、empluebcmathorgmtic、emplovebcmathorgmetic、storecurrencyinintegersegorsible、formatutcoputputputputputtutputpotised、およびneverrelelelyonfrocisis

「Mixed」から「void」まで:PHPリターンタイプ宣言の実用的なガイド 「Mixed」から「void」まで:PHPリターンタイプ宣言の実用的なガイド Jul 27, 2025 am 12:11 AM

returntypesinphpimprovecoderiability andclaritybysifyifiecifyive whatafunctionmusterturn.2.usebasictypeslikestring、array、ordatetimetoenforcorcreturnvaluesandcatcherrorsearly.3.ApplynullabletypeSwith?(E.G。、?

「Callable」疑似タイプとその実装を理解する 「Callable」疑似タイプとその実装を理解する Jul 27, 2025 am 04:29 AM

acallable inphpisapsapsodo-typereprepreSentingnayvaluethatcanbeedusings the()演算子は、主に使用されています

PHP 8.1列挙:タイプセーフ定数の新しいパラダイム PHP 8.1列挙:タイプセーフ定数の新しいパラダイム Jul 28, 2025 am 04:43 AM

php8.1で導入された酵素は、魔法の価値の問題を解決するタイプセーフ定数コレクションを提供します。 1. enumを使用して、ステータス::ドラフトなどの固定定数を定義して、定義された値のみが利用可能であることを確認します。 2。列挙型をバックデナムに介して弦または整数にバインドし、スカラーと酵素間の()とtryfrom()からの変換をサポートします。 3。酵素は、ビジネスロジックのカプセル化を強化するために、color()やisedable()などの方法と動作を定義できます。 4。動的データではなく、状態や構成などの静的シナリオに適用できます。 5.タイプの制約のためにUnitenumまたはBackedenumインターフェイスを実装し、コードの堅牢性とIDEサポートを改善し、

変数の寿命:PHPの内部「zval」構造が説明されています 変数の寿命:PHPの内部「zval」構造が説明されています Jul 27, 2025 am 03:47 AM

PHPはZVAL構造を使用して変数を管理します。答えは次のとおりです。1。ZValには、16バイトのサイズの値、タイプ、メタデータが含まれています。 2。タイプが変更されたら、組合とタイプ情報のみを更新する必要があります。 3。複雑なタイプは、ポインターを介した参照カウントを持つ構造を指します。 4.値を割り当てるとき、コピーを使用してメモリを最適化します。 5。参照変数が同じZVALを共有するようにします。 6.リサイクル参照は、特別なゴミコレクターによって処理されます。これは、PHP変数の動作の根本的なメカニズムを説明しています。

メモリ管理とPHPデータ型:パフォーマンスの観点 メモリ管理とPHPデータ型:パフォーマンスの観点 Jul 28, 2025 am 04:42 AM

PHPのメモリ管理は、参照カウントとサイクルリサイクルに基づいています。さまざまなデータ型がパフォーマンスとメモリの消費に大きな影響を与えます。1。整数と浮動小数点数は、メモリの使用量が少なく、最速の操作があり、最初に数値操作に使用する必要があります。 2。文字列は、書き込みオンワイトのコピーメカニズムを採用していますが、大きな文字列または頻繁なスプライシングはパフォーマンスの問題を引き起こすため、最適化を破裂することをお勧めします。 3.アレイメモリオーバーヘッドは大きく、特に大きいまたはネストされた配列です。ジェネレーターは、大規模なデータセットを処理し、タイムリーに変数をリリースするために使用する必要があります。 4.オブジェクトは参照モードで渡され、インスタンス化と属性アクセスは遅いです。これは、行動のカプセル化が必要なシナリオに適しています。 5。リソースタイプは手動でリリースする必要があります。そうしないと、システムレベルの漏れにつながる可能性があります。パフォーマンスを改善するには、データ型を合理的に選択し、メモリを時間内にリリースし、グローバル変数によって大きなデータを避ける必要があります。

See all articles