php は、弱く型付けされたプログラミング言語です。 PHP プログラムでは、変数のデータ型は値の変更に応じて自動的に変更されます。PHP は変数のデータ型を強制的にチェックしたり制約したりしません。次の簡単なコード例を参照してください。
コードをコピー | |
クラス人 {
$a = 1.0; //このとき、$aは浮動小数点型(Float)です
|
PHP の弱いデータ型の特性により、PHP は使いやすく、柔軟になります。しかし、これはダモクレスの剣でもあります。 PHP の弱いデータ型の特性により、開発者は PHP プログラム コードを作成するとき、特に変数が関数のパラメーターとして渡されるとき、変数のデータ型の変更に常に注意を払う必要があります。結局のところ、ほとんどの関数パラメーターは特定のデータ型のみを想定しています。たとえば、次の例では、関数 SayHi() は Person オブジェクト タイプのパラメータ タイプを受け取ることを想定していますが、PHP は厳密に型指定された言語ではなく、変数のタイプのチェックを強制しないため、任意の値を渡すことができます。関数の型パラメータに影響を与え、プログラム エラーまたはロジック例外を引き起こします。
コードをコピー | |||||||||||||||
コードは次のとおりです | コードをコピー |
クラス人 { 関数sayHi(人$人){ $person = '張三'; |
PHP 5 では、現在、オブジェクト、インターフェイス、配列、および呼び出し可能型のパラメーター変数のみが型制約を使用できることに注意してください (配列型は PHP 5.1 バージョンからサポートされ、呼び出し可能型は PHP 5.4 バージョンからサポートされます)。 )。
注: 型制約を使用するパラメーター変数がそのデフォルト値を null として宣言していない場合、関数の呼び出し時に対応するパラメーター変数に null 値を渡すことはできません。そうしないと、エラーも報告されます。
型制約は、int や string などのスカラー型では使用できません。特性も許可されません。
例 #1 型制約の例
コードは次のとおりです | コードをコピー |
//以下のようなクラス
/** // OtherClass クラス定義 |
関数呼び出しのパラメータが定義されたパラメータの型と一致しない場合、キャッチ可能な致命的なエラーがスローされます。
コードは次のとおりです | コードをコピー |
//2 つのクラスのオブジェクト // 致命的なエラー: 最初のパラメータは OtherClass クラスのオブジェクトである必要があります // 致命的なエラー: 最初のパラメータは OtherClass クラスのインスタンスである必要があります // 致命的なエラー: 最初のパラメータを null にすることはできません // 正解: Hello World を出力します // 致命的なエラー: 最初のパラメータは配列である必要があります //修正: 出力配列 // 正解: 出力 ArrayObject // 正解: int(1) を出力 |
型制約はクラスのメンバー関数で使用されるだけでなく、関数でも使用できます:
コードは次のとおりです | コードをコピー |
// 以下のようなクラス /** //正解です
/* NULL 値を受け入れます */ } テスト(NULL); ?> |