9

関数を入力する前に、パラメーターのタイプが一致するかどうかを確認したいと思います。

function ((int) $integer, (string) $string ) { /*...*/ }

とは対照的に

function ( $int, $string ) {
    $string = (string) $string;
    $int = (int) $int;
}

これを行う方法はありますか?私もそれをオブジェクトとして行うことを推測しました

function ( Integer $int ) { /*...*/ }

これを行うことで、を送信できますfunctionName ( new Integer ( $int ));が、構文が追加されないようにしたいと思います。

4

5 に答える 5

16

PHP 7以降、型ヒントの際にScalar型(int、float、string、およびbool)を使用できるようになりました。

function (int $int) { /*...*/ }
function (float $float) { /*...*/ }
function (string $string) { /*...*/ }
function (bool $bool) { /*...*/ }

OPの質問の時点では、PHPはオブジェクト、インターフェイス、および型の型ヒントのみをサポートarrayしていましたが、質問がネイティブに提案することを実行できるようになりました。

于 2018-07-13T10:05:19.297 に答える
7

確かに、複雑な型(配列、インターフェイス、オブジェクト)でいわゆる型ヒントを使用できますが、プリミティブでは使用できません(そして、少し驚いたことに、特性でも使用できます)。

型ヒントは、intやstringなどのスカラー型では使用できません。特性も許可されていません。

PHPにスカラー型のヒントを追加する提案はたくさんありますが(そのための非公式のパッチもあります)、それはそれほど簡単ではありません。さまざまなアプローチの潜在的な落とし穴をかなりうまくまとめているので、この記事をチェックすることをお勧めします。

PSところで、PHP5.5はその「チェックアンドキャスト」タイプのヒントを使用する可能性があるようです。びっくりしたのは言うまでもありません...

于 2012-10-22T13:15:03.540 に答える
0

スカラーの場合、php is_int() .. is_string()関数を使用してチェックできます。

配列とオブジェクトの場合、関数呼び出しで型ヒントを使用できます。

phpの次のバージョンでは、スカラーのサポートを示唆するタイプもあるという噂があります。

于 2012-10-22T13:13:20.063 に答える
0

php 5.5の関数パラメーターにはスカラー型キャストのような型ヒントがありますが、現時点ではクラスのみであり、使用可能なのは(php 5.4以降)のみですarraycallable

于 2012-10-22T13:14:04.903 に答える
0

http://php.net/manual/en/language.oop5.typehinting.php

INTとSTRINGにそのようなチェックを設定することはできません。

于 2012-10-22T13:14:46.697 に答える