rfc:union_types
Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
rfc:union_types [2016/06/14 14:35] levim Rework grammar in Introduction |
rfc:union_types [2016/06/14 14:44] levim |
||
---|---|---|---|
Line 7: | Line 7: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | Type declarations | + | PHP has [[http:// |
- | * Using types allows | + | * They allow the PHP engine to enforce the correct type of variable passed to or returned from a function. |
- | * Using types makes it easy to reason about what types need to be passed to, or can be returned from a function. | + | * They make it easier |
For a lot of functions in PHP each parameter will only be one type. Similarly, for the majority of functions the return value will only ever be of one type. | For a lot of functions in PHP each parameter will only be one type. Similarly, for the majority of functions the return value will only ever be of one type. | ||
Line 25: | Line 25: | ||
This RFC seeks to address these limitations. | This RFC seeks to address these limitations. | ||
- | ==== Proposal ==== | + | ===== Proposal |
This RFC proposes the ability to define multiple possible types for parameter and return types. To define a 'union type' a single vertical bar (OR) is placed between types e.g. '' | This RFC proposes the ability to define multiple possible types for parameter and return types. To define a 'union type' a single vertical bar (OR) is placed between types e.g. '' | ||
Line 32: | Line 32: | ||
There can be more than two types in the union. | There can be more than two types in the union. | ||
- | === Parameter type examples === | + | ==== Parameter type examples |
A function that requires either a string or an array is passed to it as the parameter: | A function that requires either a string or an array is passed to it as the parameter: | ||
<PHP> | <PHP> | ||
Line 59: | Line 59: | ||
For this example, it is clear to both static analysis tools and humans that passing anything other than a ParameterGenerator object or a string to this function, would be an error. | For this example, it is clear to both static analysis tools and humans that passing anything other than a ParameterGenerator object or a string to this function, would be an error. | ||
- | === Return type example === | + | ==== Return type example |
A userland definition of '' | A userland definition of '' | ||
rfc/union_types.txt · Last modified: 2017/09/22 13:28 (external edit)