rfc:switch_expression

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
Next revisionBoth sides next revision
rfc:switch_expression [2020/03/28 12:29] – Move to Under Discussion ilijatovilorfc:switch_expression [2020/03/28 21:37] – Replace InvalidArgumentException with UnhandledSwitchCaseError ilijatovilo
Line 1: Line 1:
 ====== PHP RFC: Switch expression ====== ====== PHP RFC: Switch expression ======
   * Date: 2020-03-28   * Date: 2020-03-28
-  * Author: Ilija Tovilo, ilija.tovilo@me.com+  * Author: Ilija Tovilo, tovilo.ilija@gmail.com
   * Author: Michał Brzuchalski, brzuchal@php.net   * Author: Michał Brzuchalski, brzuchal@php.net
   * Status: Under Discussion   * Status: Under Discussion
Line 138: Line 138:
 </code> </code>
  
-The unexpected value will go unnoticed until the program crashes in a weird way, causes strange behavior or even worse becomes a security hole. Many languages can check if all the cases are handled at compile time or force you to write a ''default'' case if they can't. For a dynamic language like PHP the only alternative is throwing an exception. We can't reasonably change the exhaustiveness behavior in the ''switch'' statement because it would break a lot of code. The ''switch'' expression resolves this issue by throwing an ''InvalidArgumentException'' if the condition isn't met for any of the cases and the ''switch'' doesn't contain a ''default'' case.+The unexpected value will go unnoticed until the program crashes in a weird way, causes strange behavior or even worse becomes a security hole. Many languages can check if all the cases are handled at compile time or force you to write a ''default'' case if they can't. For a dynamic language like PHP the only alternative is throwing an error. We can't reasonably change the exhaustiveness behavior in the ''switch'' statement because it would break a lot of code. The ''switch'' expression resolves this issue by throwing an ''UnhandledSwitchCaseError'' if the condition isn't met for any of the cases and the ''switch'' doesn't contain a ''default'' case.
  
 <code php> <code php>
Line 218: Line 218:
 $y = $x === 1 ? ... $y = $x === 1 ? ...
   : ($x === 2 ? ...   : ($x === 2 ? ...
-  : (($x === 3 ? ...+  : ($x === 3 ? ...
   : 0));   : 0));
 </code> </code>
rfc/switch_expression.txt · Last modified: 2020/04/12 00:04 by ilijatovilo