私はNetbeansをPHPでオートコンプリートさせようとしていました 、そしてこのコードがPHPで有効であることを学びました:
function blah(Bur $bur) {}
いくつかの質問:
この型ヒントは、関数の引数の検証にのみ機能します。 PHP変数は常に特定の型でなければならないことを宣言できません。これは、例では、 "burh"が呼び出されたときに$ burがBur型でなければならないことを意味します。関数内で非Bur値に再割り当てできます。
型ヒントは、クラス名またはインターフェイス名に対してのみ機能します。たとえば、引数が整数でなければならないことを宣言することはできません。
PHPの型ヒントの面倒な点の1つは、Javaとは異なりますが、NULL値は許可されないことです。したがって、オブジェクトの代わりにNULLを渡すオプションが必要な場合は、type-hintを削除して、関数の上部で次のような操作を行う必要があります。
assert('$bur === NULL || $bur instanceof Bur');
EDIT:PHP 5.1;からデフォルト値としてNULLを使用できるようになったため、この最後の段落は適用されません。型のヒントもあります。
EDIT:SPL Type Handling 拡張機能もインストールできます。これにより、文字列、int、float、booleanのラッパー型が提供されます。 、列挙型。
EDIT:PHP 5.1以降の「配列」、およびPHP 5.4。
EDIT:PHPなので、 "string"、 "int"、 "float"および "bool"も使用できます。 7.0。
/**
* @var string
*/
public $variable = "Blah";
これは、タイプヒントと呼ばれ、PHP 5.で追加されます。 't期待される型を渡しません。ただし、プリミティブ型を入力することはできません(int $ burはありません)。
#2:(...)変数の型をPHPで関数内にいない場合はどうすれば宣言できますか?
最近、PHP4と5で「 settype() 」と「 gettype() 」について聞いた
いつでも簡単に変数の型を強制できます
PHP.netから:
bool settype(混合&$ var、文字列$ type)
パラメーター
var:変換される変数。 type:typeの可能な値は次のとおりです。
[:D最初の訪問、最初のコメント...]
これは、実際にblahメソッドに渡すことができる変数のタイプに制限を課していますか?
これは type hinting と呼ばれます。 PHP私がリンクしたばかりのドキュメントによると、はい、それは引数タイプに制限を課します: "タイプヒントを満たさないと、キャッチ可能な致命的エラー。 "
PHPで関数内にいない場合、変数の型を宣言するにはどうすればよいですか?
読み取り タイプジャグリング 。 PHPで変数の型を明示的に定義することはできません。その型は使用されるコンテキストによって決定されます。