rfc:callable-interfaces

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rfc:callable-interfaces [2016/04/06 11:58] – Adding question about instanceof usage ocramiusrfc:callable-interfaces [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 4: Line 4:
   * Author: Ben Scholzen, mail@dasprids.de   * Author: Ben Scholzen, mail@dasprids.de
   * Author: Marco Pivetta, ocramius@gmail.com   * Author: Marco Pivetta, ocramius@gmail.com
-  * Status: Draft+  * Status: Retired
   * First Published at: http://wiki.php.net/rfc/callable-interfaces   * First Published at: http://wiki.php.net/rfc/callable-interfaces
  
Line 112: Line 112:
 ===== Still Open for Discussion ===== ===== Still Open for Discussion =====
  
- * how will **instanceof** behave, when asked for a type-check against **callable**?+How will **instanceof** behave, when asked for a type-check against **callable**? 
 + 
 +<code php> 
 +interface RegisterUser { 
 +    public function __invoke(Username $username) : UserRegistration; 
 +
 + 
 +interface DeleteUserRegistration { 
 +    public function __invoke(Username $username) : UserRegistration; 
 +
 + 
 +$register = function (Username $username) : UserRegistration { 
 +    return new UserRegistration(...); 
 +}; 
 + 
 +var_dump($register instanceof DeleteUserRegistration); // true? false? possibly want to keep current semantics here. 
 +</code> 
 + 
 +===== Retired ===== 
 + 
 +This RFC has been retired. Reason for that is that PHP currently (Version 7.0~7.1) allows applying function semantics to objects via the **_****_invoke** magic methods. Allowing the opposite would mix the domain of functions and objects in ways that are very hard to disentangle, and it would needlessly complicate the language semantics. 
 + 
 +While it is unfortunate that migration to type-safe callables (https://wiki.php.net/rfc/typesafe-callable) would require some interface rewrites, that is indeed the correct solution, as it keeps the uni-directionality between object and function semantics.
  
 ===== Backward Incompatible Changes ===== ===== Backward Incompatible Changes =====
rfc/callable-interfaces.1459943902.txt.gz · Last modified: 2017/09/22 13:28 (external edit)