はそれが強力なデータ型付けバグ
public function nullify(bool $force=FALSE);
として定義されたインタフェース内のメソッドのために「のみ NULLにすることができますクラス型ヒントを使用してパラメータのためのデフォルト値」エラーを取得するには正常ですか?
私はそれがオブジェクトではなくブールである必要があり、デフォルトでは偽です。
はそれが強力なデータ型付けバグ
public function nullify(bool $force=FALSE);
として定義されたインタフェース内のメソッドのために「のみ NULLにすることができますクラス型ヒントを使用してパラメータのためのデフォルト値」エラーを取得するには正常ですか?
私はそれがオブジェクトではなくブールである必要があり、デフォルトでは偽です。
phpのブール型パラメータのヒントはありません(まだ)。クラス名またはarray
しか指定できません。 したがってfunction foo(bool $b)
は、「パラメータ$ bはクラス 'bool'またはnull」のインスタンスでなければなりません。
http://docs.php.net/language.oop5.typehinting:
機能について(関数のプロトタイプでクラスの名前を指定することによって)オブジェクトまたは(PHP 5.1以降)配列されるパラメータを強制することができます。
PHP 5のタイプヒントは、特定のクラス(またはそのサブクラスの1つ)または配列に限定されています。他のスカラー型は指定できません。
すでに述べたように、ヒントのタイプは配列とオブジェクトに対してのみ機能します。あなたの関数は次のように書くことができます:
public function nullify($force=FALSE){
$force=(bool)$force;
//further stuff
}
不適切なパラメータの "キャッチ可能な致命的なエラー" phpに近づくには、false === is_bool($ force)の場合はuser_errorを発生させるか例外をスローします。 – VolkerK
パラメータをブール値に強制することはできません。
language.oop5.typehintingのように:
PHP 5では、タイプヒントが導入されています。関数は、パラメータをオブジェクト[...]、インタフェース、配列(PHP 5.1以降)または呼び出し可能(PHP 5.4以降)にすることができるようになりました。[...]
タイプはは、intまたは文字列としてスカラー型で使用することはできませんヒント。 [...]
そしてlanguage.types.introに見られるような、PHPのスカラー型は、次のとおりです。
- boolean - integer - float (floating-point number, aka double) - string
あなたは試みることができる:あなたがアップグレードするまで
public function nullify($force){
if(is_object($force)) $force = false;
...
}
は一時的な解決策として、それを考えてみましょうPHP。
これはphp7で動作するはずです –