2011-10-24 45 views
5

関数の引数を複数の可能な型として定義できますか?例えば、関数は何かを達成するために文字列か整数をとることができます。何とかこのように定義することは可能ですか?PHPで複数の関数の引数型を定義する

function something(int|string $token) {} 

引数が1つだけサポートされていますか?

(心あなたは、私は私が後で入力をフィルタリングすることができます知って、私はちょうど私の引数は入力したのが好き)

答えて

2

あなたができる最善のタイプヒンティングと呼ばれ、ここで説明されています

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

特に、クラスタイプまたは配列タイプをヒントできますが(マニュアルに記載されているように)「従来型のヒントとintおよびstringはサポートされていません」だから私はあなたが達成しようとしていることはこのレベルでは不可能だと思います。

しかし、独自のラッパーなどを作成することはできますが、おそらくこれを処理する方法は数多くあります。

+1

乾杯以外のものを使用する必要があり、私は最終的にそれが今タイプヒンティングと呼ばれています知っています。 – Swader

+1

PHPのヒントと呼ばれているのは、PHPインタプリタのヒントなので、人為的に引数の型をチェックし、ヒントと一致しない場合はエラーを投げるように指示されています。静的型付けされた言語では、それは基本的で必要なものであり、関数の構文の一部であり、そのように呼び出されることはありません...実際には、特定の名前を持っていないと思われます。 – Palantir

+0

知って、感謝! – Swader

0

PHPは動的型付けされた - しかし、タイプヒンティングは言語に追加されました - ので、あなたはパラメータをほのめかしていませんでした場合は、あなたが好きなタイプを渡すことができます。

オフ
function something($token) 
{ 
    if (is_numeric($token)) { 
    // its a float, double, integer 

    } else { 
    // its a string, array, object 
    } 
} 

(私の頭の上に私はどのようにリソースが処理されるかわかりません)。

は、しかし、あなたが強く型付けされた言語でプログラムしたい場合は、(私見)あなたがPHP

+0

'is_numeric'には数値文字列も含まれますが、リソースは含まれません。 – deceze

+0

ありがとう、ちょうどHipHopのためにそれを最適化しようとしています。 – Swader

関連する問題