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 | ||
rfc:union_types [2016/06/14 14:40] levim s/T/t/ |
rfc:union_types [2017/09/22 13:28] (current) |
||
---|---|---|---|
Line 3: | Line 3: | ||
* Date: 2015-02-14 | * Date: 2015-02-14 | ||
* Author: Levi Morrison < | * Author: Levi Morrison < | ||
- | * Status: | + | * Status: |
* First Published at: http:// | * First Published at: http:// | ||
Line 10: | Line 10: | ||
* They allow the PHP engine to enforce the correct type of variable passed to or returned from a function. | * They allow the PHP engine to enforce the correct type of variable passed to or returned from a function. | ||
- | * They make it easier to reason about what types need to be passed to or can be returned from a function. | + | * They make it easier to reason about what types need to be passed to or can be returned from a function. |
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 '' | ||
Line 166: | Line 166: | ||
This RFC requires that two-thirds of voters vote in favor of the RFC to pass. | This RFC requires that two-thirds of voters vote in favor of the RFC to pass. | ||
- | <doodle title=" | + | <doodle title=" |
* Yes | * Yes | ||
* No | * No | ||
Line 173: | Line 173: | ||
Additionally, | Additionally, | ||
- | <doodle title=" | + | <doodle title=" |
* Yes | * Yes | ||
* No | * No | ||
</ | </ | ||
| | ||
- | <doodle title=" | + | <doodle title=" |
* Yes | * Yes | ||
* No | * No |
rfc/union_types.1465915211.txt.gz · Last modified: 2017/09/22 13:28 (external edit)