Hi Pascal, > On 5 Feb 2015, at 00:02, Pascal Chevrel <pascal.chev...@free.fr> wrote: > > I am probably going to ask a stupid question, but do we really need the =1 > part in declare? > > declare(strict_types=1) couldn't be declare(strict_types)? > > Or does it mean that there would be cases when strict typing would be > deactivated after being activated with declare(strict_types=0)?
Oh, I made it like that because that’s the existing syntax of declare(), it takes a name and a value. But I suppose it could be modified to allow just a name. I don’t think we should modify it just for this specific case, really… less exceptions to a rule and more consistency are generally a good thing. There is a use for declare(strict_types=0), which is to make part of a file weak while having the rest strict. It’s not something you’d want to do very often, but it may be useful in some rare cases. If we have declare(strict_types=1), then it makes sense to also have declare(strict_types=0). It’d be rather odd to not allow it. > To be honest, I don't like declare() because it looks like a function call, > not a setting for the file like a namespace declaration would be. Also, in > the case of declare(ticks=1), 1 is not a boolean but an interval so I find it > a bit confusing that strict_types=1 would be a boolean in that case. Or maybe > declare(strict_types=true) then? I originally had it be a boolean, but considering how often this would be used, I changed it to 1 for terseness. Using 1 is common for INI settings, so I don’t think it’d be that confusing, but I see your point. > Personnally I would prefer a syntax like: > declare strict; > > which is just shorter and more readable in my opinion. I know it is mostly > cosmetic but I don't really understand why declare uses parenthesis if it is > a language construct and not a function (and yes, I think that > declare(ticks=1) also looks silly ;) ); > > So basically instead of that at the top of my files: > <?php > namespace Foo; > use Bar; > declare(strict_types=1); > > I would prefer having that: > <?php > namespace Foo; > use Bar; > declare strict; > > It's probably a detail in the whole discussion, but for some weird > psychological reason, it matters to me :), I can see the appeal, though I’m not really sure about adding new syntax just for this. By the way, I think declare() would be easily distinguished from a function for two reasons. Firstly, you can’t assign to constants, and secondly, it’ll be syntax-highlights differently. I can understand your concerns, though. :) Thanks for voicing them. -- Andrea Faulds http://ajf.me/ -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php