Re: Difficulty with semicolon
| From: | Jeffry Killen | Date: | Wed, 18 Apr 2018 22:06:52 +0000 |
| Subject: | Re: Difficulty with semicolon | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-326441@lists.php.net to get a copy of this message | ||
> On Apr 18, 2018, at 2:49 PM, Jeffry Killen <jekillen@prodigy.net> wrote:
>
>
>> On Apr 18, 2018, at 1:59 PM, David Harkness <david.h@highgearmedia.com> 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@prodigy.net> 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
>