À partir de maintenant, la prise en charge est pour les deux objets, le partage d'une interface. Exemple:
interface ReturnInterface {}
class FailObject implements ReturnInterface {}
class SuccessObject implements ReturnInterface {}
function test(): ReturnInterface {}
Dans cet exemple, ReturnInterface
est vide. Sa simple présence prend en charge le nécessaire retour de la déclaration de type.
Avertissement:
La suite discuté de la RFC (types d'Union) a été diminué
https://wiki.php.net/rfc/union_types
Il est actif, chaud discussion sur les types d'union avec plusieurs concurrents RFC. Si l'un de ces pass, puis une proposition de signature:
function test(): FailObject|SuccessObject {}
Cela dit, je préfère l'approche de l'interface indépendamment des types d'union. Pour moi, il est plus clair et plus extensible. Si plus tard, je veux un WarnObject
j'ai simplement besoin de se définir comme une extension de l' ReturnInterface
- plutôt que de passer par toutes les signatures et les mettre à jour à l' FailObject|SuccessObject|WarnObject
.