> On Apr 18, 2018, at 2:49 PM, Jeffry Killen <jekillen@xxxxxxxxxxx> wrote: > > >> On Apr 18, 2018, at 1:59 PM, David Harkness <david.h@xxxxxxxxxxxxxxxxx> wrote: >> >> Unfortunately, empty statements are sometimes needed in real-world code. >> >> while (!keepTrying()) >> /* keep trying... */ ; >> >> I added the indentation for clarity. We enforce the use of braces even for one-line blocks like this to help. >> >> while (!keepTrying()) { >> /* keep trying... */ ; >> } >> >> That, however, wouldn't have solved your typo. Since we can't remove the ability to have empty statements, one could argue for an option to enforce braces for all blocks, but I expect the developers would deny such a request with, "just don't make typos!" :) This is where a linter can help. You can tell PhpStorm and other editors to disallow one-line blocks without braces, and they would flag that line for you. >> >> Cheers, >> David >> >> > > Thanks for the reply. > In an attempt to test an intercept a variable value early in a function execution for an async request, > I put in a call to file_put_contents and write a text file with the variable value so I could open the file and > see what its status and value was. Then there re is a return statement so the rest of the code would not run. > I got a warning: code following return is unreachable. > > Also your first example might look in code like > >> while (!keepTrying()) /* keep trying... */ ; > > Yes the semicolon occurs after the closing parenthesis but it is also after the the last closing parenthesis in the > construct: something like > > do(s) > {// code; } > while(x); > > but if you had > do(s); > { // code} > while(x) OOPS; I don't think I should have had do() So it would be > do > { // code} > while(x) and > do; > { // code} > while(x) JK > > I presume the code after do(s); would run once: would this cause a parse error for trying to reconcile the while statement > because the do statement needs an associated while statement? > I would think so. I have never used do/while and never had success using while statement, accept where it is already part > of code I have copied into my scripts and published as freely usable. > > But, nonetheless, it is my task to avoid typos. > > JK >> >> >> On Wed, Apr 18, 2018 at 1:28 PM, Jeffry Killen <jekillen@xxxxxxxxxxx> wrote: >> Hello; >> This is the second time I have had to deal with this issue. >> It is the result of my own typing errors. But I thought it would >> be worthwhile sharing the implicit problem. >> >> You may notice the line marked '//<<<' There is a semicolon immediately >> following the closing ')'. >> >> This is part of a function to create a directory with a default index.php file >> This code would not run if the directory had not been created successfully. >> >> What happened was that the error implied by file_put_contents returning false >> was sent: EVEN though the file WAS actually created. It appears that the semi >> colon caused the false value to be converted to true and the error was sent. >> Or it just canceled the conditional test and the error block was run with out it. >> (I didn't think it was possible). >> >> So, the take away is that it would be worthwhile for a syntax error to the issued >> in this case. I can't think of any conditional or looping construct that would use >> a semicolon at this location usefully. And lord knows that if you leave one out >> where it needs to be, you hear about it. >> >> $_indTxt = "<?php\n/* code */;\n"."?".">"; >> if(file_put_contents($_tar."/index.php", $_indTxt) === false); // <<< >> { >> $_out['error'] = $_errHead." file named ".$_tarShrt."/index.php file not created"; >> return $_out; >> } >> >> Thanks for time and attention. >> JK >> -- >> PHP General Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php >> >> > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php