> On May 16, 2020, at 5:13 AM, Pavel Patapau <algerd....@gmail.com> wrote: > > Hello everyone, > > I want to propose new syntax addition - guard statement, that executes code > only if expression equals false and must contain control-flow changing code, > and written a respective RFC: > > https://wiki.php.net/rfc/guard_statement > <https://wiki.php.net/rfc/unbundle_xmlprc> > > Implementation in progress. > > I started work before this proposal https://externals.io/message/110107 and > respected some moments in the RFC. > > > Thanks for consideration, > Pavel
Many others have already made comments that I agree with so won't echo as they have already been said. Two points: 1. That adding a `guard` would make it a reserved word is of significant concern to me, and looking at your examples I would ask why not simply ask that the if statement be able to omit the "true" block which could accomplish the same w/o needing to add another reserved word? e.g. if (condition) else { //this code executed only if condition equals false return|throw|goto; //or continue | break(in loop context only); } // in loop context - valid code while (condition){ if (condition) else { break; //valid } } Alternately, why not simply use what we already have, and what I do often, invert the condition? if ( ! condition) { //this code executed only if condition equals false return|throw|goto; //or continue | break(in loop context only); } // in loop context - valid code while (condition){ if ( ! condition ) { break; //valid } } Secondly, you reference this essay[1] which mentions why multiple returns are a bad idea, yet your proposal seems to want to encourage people to write more early returns, not fewer. Regarding the multiple returns, consider the following, using an if(condition)else{} syntax AND assuming that we could add support for try{} without being required to use a catch(): function example() { try { $value = null; if (condition1) else { break; } if (condition2) else { break; } if (condition3) else { break; } $value = do_work(); } return $value; } -Mike [1] https://medium.com/@scadge/if-statements-design-guard-clauses-might-be-all-you-need-67219a1a981a -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php