rfc:nullsafe_calls
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
rfc:nullsafe_calls [2014/10/24 20:11] – jwatzman | rfc:nullsafe_calls [2014/12/09 23:08] – jwatzman | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== PHP RFC: Nullsafe Calls ====== | ====== PHP RFC: Nullsafe Calls ====== | ||
- | * Version: | + | * Version: 1.0 |
- | * Date: 2014-10-22 | + | * Date: 2014-12-09 |
* Author: Josh Watzman (jwatzman@fb.com), | * Author: Josh Watzman (jwatzman@fb.com), | ||
- | * Status: | + | * Status: |
* First Published at: https:// | * First Published at: https:// | ||
Line 46: | Line 46: | ||
If '' | If '' | ||
- | TODO: why? | + | This is done because it parallels what the ''< |
- | TODO: this has deep implications for the implementation, | + | It's worth noting that this point has deep implications for the implementation, |
==== Implications ==== | ==== Implications ==== | ||
Line 58: | Line 58: | ||
==== Prior Art ==== | ==== Prior Art ==== | ||
* C#, CoffeeScript, | * C#, CoffeeScript, | ||
+ | * Haskell has the "maybe monad", | ||
* Hack has already implemented a proposal identical to this one. | * Hack has already implemented a proposal identical to this one. | ||
===== Backward Incompatible Changes ===== | ===== Backward Incompatible Changes ===== | ||
- | What breaks, and what is the justification for it? | + | Due to an implementation detail, this decreases the maximum number of arguments a function can be called with from '' |
+ | |||
+ | This is just a technicality... all of my attempts to actually hit that limit put my machine into swapdeath long before I got close :-P | ||
+ | |||
+ | See also "RFC Impact To Existing Extensions" | ||
===== Proposed PHP Version(s) ===== | ===== Proposed PHP Version(s) ===== | ||
- | This is proposed for the next major version of PHP, currently PHP 7. | + | PHP7. |
===== RFC Impact ===== | ===== RFC Impact ===== | ||
==== To Existing Extensions ==== | ==== To Existing Extensions ==== | ||
- | Will existing | + | Extensions have access to an opline' |
+ | |||
+ | If this impact is deemed too much, there are certainly other implementation options, which I think are less attractive. We could add a new '' | ||
==== New Constants ==== | ==== New Constants ==== | ||
- | Describe any new constants so they can be accurately and comprehensively explained in the PHP documentation. | + | Nothing accessible from outside |
===== Open Issues ===== | ===== Open Issues ===== | ||
Line 77: | Line 84: | ||
===== Unaffected PHP Functionality ===== | ===== Unaffected PHP Functionality ===== | ||
- | This RFC does not change any existing PHP behavior, including the ''< | + | This RFC does not change any existing PHP behavior, including the ''< |
===== Future Scope ===== | ===== Future Scope ===== | ||
Line 86: | Line 93: | ||
===== Patches and Tests ===== | ===== Patches and Tests ===== | ||
- | * php-src: I have a scratch | + | * php-src: I have a branch at https:// |
- | * PHP spec: nothing | + | * PHP spec: not yet, but will do if the RFC is accepted. |
* PHP docs: import Hack's documentation when they add it: https:// | * PHP docs: import Hack's documentation when they add it: https:// | ||
rfc/nullsafe_calls.txt · Last modified: 2020/08/03 10:09 by ilutov