2012-04-18 6 views
0

Phpで関数のパラメータの実数型を指定したいと思いますか?phpは実数型を示します

例:

<?php 
function test($param) 
{ 
    echo $param; 
} 
$str = "hiiiii everyone"; 
test($str); 
?> 

だけではなく、機能テストでのparamを$置きます。私はそのようなものを置いてほしいです

function test(string $param) // string is the type of the param, that can be int, long ect or an object which I had created. 

最後のバージョンのPHPでこれを行うことは可能ですか?

+0

@ジョナサンサンプソン:あなたは文字列であることを、引数を強制する場合

は、このような何かをありがとう:-) – Dale

+1

[ドキュメント](http://php.net/manual /en/function.is-numeric.php)[is](http://php.net/manual/en/function.is-int.php)[あなたの](http://php.net/manual/en /function.is-string.php)[friend](http://php.net/manual/en/function.is-object.php)。それを読んで。大好きです。これを使って。 –

+0

どうしてありがとう? – Necko

答えて

1

あなたが探しているものはType Hintingです。しかし、リンクされたマニュアルページに記載されている通り:

int型やstring型などのスカラー型では、型ヒントを使用できません。

これは、関数の引数を文字列にすることはできません。特定のクラス、呼び出し可能なもの、または配列のインスタンスにすることができます。

function my_func ($mustBeAString) { 
    if (!is_string($mustBeAString)) return; 
    // Do stuff here 
} 
0

私はテーブルにこれを持参したいと思います:

var_dump($str); 
1

Type HintingはPHP5で導入されました。これで、パラメータリスト自体にその型を指定することで、パラメータを特定の型にすることができます。

残念ながら、スカラーオブジェクト(int、およびstringなど)は許可されません。

あなたが渡されたオブジェクトは、is_string()other typesとしても扱う)gettype()のようなメソッドを使用して、適切なタイプのものであり、あるいは型オペレータinstanceofかどうかを判断するために、内部で独自のチェックを行うことができます。

+0

私はあなたがそれを削除した理由が不思議でした。 +1 –

1

いいえ、PHPは動的に型指定された言語です。変数(およびそのようなパラメータ)にはセット型がありません。あなたは試してみて、すなわち、gettype使用して、独自のものを強制できます。

function test($param) { 
    if(gettype($param) != "string") 
     throw new TypeException //or something 
} 

をしかし、それは悪い考えです。あなたが初めての言語で他の言語の機能を実装しようとしないでください。正しい方法を試してみて、それがそこからどうなるかを見てみましょう。

+0

ベスト・説明とクリア。 +1 –

+0

おっと忘れてしまいました。ありがとう@xbonez –

+0

thxそれは明らかです、コードの美しさは、その型を知らなくてもいくつかの機能を持っているのは非常に退屈です... – Necko

関連する問題