Well, you convinced me (no need to get all physical with me tho ;)). If this
is how C acts (which I did not know), then I prefer it to work like this
too. I always assumed (which is bad, I know) the default case worked like a
"catch all", which catches anything that crosses its path, and therefor
needed to be defined as the last case in the switch. Apparently, this is not
the case throughout the history of the switch statement (which I didn't
know), so I agree with you, especially since this has worked in PHP4.

Ron

"Christian Schneider" <[EMAIL PROTECTED]> schreef in bericht
news:[EMAIL PROTECTED]
> Benj Carson wrote:
> > Coming from C (or Java), I find the new behaviour a little strange.  If
you
>
> I fully agree. Although I wouldn't have used the word 'little' here :-)
>
> > use default to match invalid conditions, putting it at the beginning of
a
> > switch doesn't seem to be poor practice to me (putting it in the middle
>
> Even putting in the middle makes sense IMHO:
> Looking at some of my code I found constructs like
> switch ($sort)
> {
> case 'firstname': ...
> default: case 'lastname': ...
> case 'email': ...
> }
> which seems completely legal and understandable to me: I can sort by
> different fields (which have a natural order in my data structure so
> that's how I list them) and one of them happens to be the default if
> $sort is not set. I don't think it's up to the programming language to
> judge if such a construct makes sense or not.
>
> > On October 8, 2004 12:10 am, Ron Korving wrote:
> >>assume you're experiencing now. You could've seen this coming. When you
> >>write a switch, think of it as the input being matched case by case,
with
> >>"default" being the case that matches anything. This means you don't
> >>wanna place the default case anywhere but at the bottom.
>
> But the important thing is that PHP4 DOES NOT IMPLEMENT IT THIS WAY!
>
> php -r '$a = 1; switch ($a) { default: print "0\n"; break; case 1: print
> "1\n"; }'
> prints 1 for PHP 4.3.9 (but prints 0 for 5.1.0-dev)
>
> So a) the documentation does not match the PHP behaviour people got used
> to, b) it is different to every other language having a switch statement
> I know, c) it would be a nasty BC break to change it now.
>
> I strongly suggest that the behaviour is defined a la C (the position of
> default: does not matter) and the documentation is changed accordingly!
>
> There is 1000 times more PHP 4 code around (which may rely on the C-like
> behaviour) than PHP 5 code so we still have time. But not much. We have
> to resort this as quickly as possible to avoid a big mess...
>
> - Chris

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to