をPHP戻り値の型がどちらか一方を返すと宣言し、他の何かを失敗させますか?複数の戻り値の型は、私は2つの戻り値の型</strong>の<strong>1を返すことができ、いくつかのメソッドを持っている7
function test(): ?
{
if ($this->condition === false) {
return FailObject;
}
return SucceedObject;
}
をPHP戻り値の型がどちらか一方を返すと宣言し、他の何かを失敗させますか?複数の戻り値の型は、私は2つの戻り値の型</strong>の<strong>1を返すことができ、いくつかのメソッドを持っている7
function test(): ?
{
if ($this->condition === false) {
return FailObject;
}
return SucceedObject;
}
現時点では、2つのオブジェクトがインターフェイスを共有する方法がサポートされています。例:
この例では、ReturnInterface
は空です。単なるプレゼンスであり、必要な戻り値の型宣言をサポートしています。
警告:
以下の議論RFC(ユニオンタイプ)は、いくつかの競合RFCと労働組合の種類について活発な、熱い議論があり
https://wiki.php.net/rfc/union_types
を辞退されました。これらのパスのいずれかの場合には、提案された署名は次のようになります
function test(): FailObject|SuccessObject {}
前記つまり、私は関係なく、組合型のインターフェースアプローチを好みます。私にとっては、より明確で拡張性があります。後でWarnObject
が必要な場合は、すべてのシグニチャを通過してFailObject|SuccessObject|WarnObject
に更新するのではなく、ReturnInterface
の拡張として定義する必要があります。
ビショップに記載されているように、複数の戻り値の型を追加するためのRFCがあります。あなたはint型の前に
function exampleFunction(string $input) : ?int
{
// Do something
}
だから、この関数は、文字列にかかるだろうと疑問符を追加することによって:しかし、私はPHP7.1のようあなたは今、このようなNULL可能戻り値の型を指定することができることを追加しようと思いましたnullまたは整数のいずれかを返すことができます。ここで
は、ドキュメントへのリンクです: http://php.net/manual/en/functions.returning-values.php
そしてここでは、使用方法を説明し、そのページからの引用です: PHP 7.1で型宣言を先行することによって、ボイドとヌル戻り値の型が可能になりますか? - (?例えば、関数canReturnNullorString():文字列)
また、ここではこれに関連し、別のスレッドがあります:Nullable return types in PHP7
PHP 7.2は現在のオブジェクト戻り値の型のみ
http://php.net/manual/en/migration72.new-features.php
function test(object $obj) : object
// return any type of object ...
をサポートしています'FailObject'と' SucceedObject'の両方がインタフェースを共有している場合、または共通の親から継承している場合 –