ホームページ >バックエンド開発 >PHPチュートリアル >PHPでヒントを入力します
キーポイント
is_string()
やis_int()
などの関数を使用して、エラーを上げたり、例外を投げたりすることができます。 PHP 5から始めて、型プロンプトを使用して、関数宣言で予想されるデータ型のパラメーターを指定できます。関数を呼び出すと、PHPはパラメーターが指定されたタイプであるかどうかを確認します。そうでない場合、ランタイムはエラーを上げて実行を停止します。有効なタイプには、受信オブジェクトのクラス名と受信アレイのarray
が含まれます。例は次のとおりです。
<code class="language-php"><?php function enroll(Student $student, School $school) { echo "Enrolling " . $student->name . " in " . $school->name; } ?></code>
PHP enroll()
メソッドにどのような種類のオブジェクトを受け取ることを期待するかを伝えることにより、生徒が修道院や401Kプランではなく学校に登録されるようにすることができます。繰り返しますが、3年生の最初の日に頑固な貧困層が現れることはないことを知っています。メディケアに登録しようとするとどうなりますか?
<code class="language-php"><?php $me = new Student("Amanda"); $medicare = new Program("Medicare"); $enroll = enroll($me, $medicare); ?></code>
私は学生ですが、次のエラーが発生します:
<code>Catchable fatal error: Argument 2 passed to enroll() must be an instance of School, instance of Program given, called in typehint.php on line 32 and defined in typehint.php on line 6</code>
パラメーターのデフォルト値として<cod>null</cod>
が使用されている場合、許可されます。これが例です。今回は配列を使用しています。
<code class="language-php"><?php function startParty(array $guests, array $food = null) { // party stuff... } $guests = array("Susan Foreman", "Sarah Jane Smith", "Rose Tyler", "Donna Noble"); startParty($guests, null); ?></code>ゲストがいる限り、食べ物があるかどうかに関係なくパーティーがあります。
タイプのヒントの制限
定義されたクラスは有効なタイプのプロンプトになりますが、PHPは一般的なオブジェクトのタイププロンプトをサポートしていません。他の状況はどうですか? PHPタイプのプロンプトの制限に関する特別な例は次のとおりです。
あなたは「何がクレイジーですか?私はあなたに文字列インスタンスを与えましたが、あなたはそれが問題ではないと不平を言いました!」これはよくあることです。実際、一見すると、これはかなり混乱するエラーメッセージになる可能性があります。
は文字列を探していませんが、文字列クラスの例を探しています。 PHPのタイププロンプトは、文字列や整数値などのスカラーデータ型をサポートしていません。しかし、それは大丈夫です!引数がスカラータイプ(文字列や整数など)ではない場合にエラーを上げたり、例外をスローする必要がある場合は、<code class="language-php"><?php function stringTest(string $string) { echo $string; } stringTest("definitely a string"); ?></code>や
<code>Catchable fatal error: Argument 1 passed to stringTest() must be an instance of string, string given, called in typehint.php on line 42 and defined in typehint.php on line 39</code>などの関数を使用してこれを達成するために基本的な検証を実行できます。
stringTest()
is_string()
スカラー戦争is_int()
PHP 5.4にスカラーPHPタイプのプロンプトを追加することについてのいくつかの論争があります。変更の反対者は、このサポートがPHPの基本設計に違反すると考えています。 PHPは弱いタイプの言語と見なされます。基本的に、これはPHPではデータ型を宣言する必要がないことを意味します。変数はまだ関連付けられているデータ型に関連付けられていますが、エラーを引き起こすことなく整数に文字列を追加するなど、急進的なことをすることができます。 2010年5月、ScalarタイプのヒントのサポートがPHPバックボーンに追加されました。ただし、コミュニティの対応により、この機能はバージョン5.4に入りません。
概要
タイププロンプトは、オブジェクト指向プログラミングのためのPHPテクノロジーの導入です(特に、例外をキャッチするタイプを識別するため)。ここでオブジェクトの使用に関する詳細を読むことをお勧めします。カルロスE.サンタマリア /シャッターストックの写真写真
PHPタイプのヒントFAQ(FAQ)
PHPのすべてのデータ型にタイププロンプトを使用できますか?
如果传递的参数的数据类型与类型提示不匹配会发生什么?
PHP 类型提示如何与类继承一起工作?
我可以在 PHP 的内置函数中使用类型提示吗?
PHPタイプのプロンプトの厳格なパターンは何ですか?
を宣言する必要があります。このステートメントは、スクリプトの最初のステートメントでなければなりません。 declare(strict_types=1);
関数返品値にタイププロンプトを使用できますか?
PHPのNullable Typeプロンプトは何ですか?
以上がPHPでヒントを入力しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。