On Tue, 2002-02-19 at 05:14, Ford, Mike [LSS] wrote:
> > -----Original Message-----
> > From: Matt [mailto:[EMAIL PROTECTED]]
> > Sent: 18 February 2002 23:30
> > To: Lars Torben Wilson
> >
> > > $foo = "This page is $_SERVER[PHP_SELF]";
[snip]
> > Can you expand on why the first option isn't generally
> > acceptable?
>
> Another reason, as I understand it (and I'm sure Torben will correct
> me if I'm wrong!), is that in the version without quotes, PHP_SELF is
taken as the name of a constant -- which, as it happens to be undefined,
PHP very kindly assumes you intended to be the equivalent string
'PHP_SELF'. This is bad for two reasons: (1) the PHP compiler is doing
avoidable extra work to get the desired result; (2) if you just happen,
at a later date, to define a constant of that name, your result will
suddenly be wrong (unlikely with PHP_SELF, I admit, but less so with
something like, say, MAX_SIZE). Even though this is only a theoretical
danger of low probability, the principles of good defensive programming
would suggest that you nonetheless avoid it with a vengeance!!
>
> Cheers!
>
> Mike
You're very right, but even worse than constant collisions are the
keyword collisions, as far as WTF factor goes:
<?php
$array('default' => 'Select an option',
'option1' => 'First option',
'option2' => 'Second option');
echo $array[default]; // Parse error.
?>
This one has come up a number of times.
--
Torben Wilson <[EMAIL PROTECTED]>
http://www.thebuttlesschaps.com
http://www.hybrid17.com
http://www.inflatableeye.com
+1.604.709.0506
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php