RE: [PHP] PHP_SELF Undefined
| From: | Lars Torben Wilson | Date: | Tue, 19 Feb 2002 18:46:47 +0000 |
| Subject: | RE: [PHP] PHP_SELF Undefined | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-85419@lists.php.net to get a copy of this message | ||
On Tue, 2002-02-19 at 05:14, Ford, Mike [LSS] wrote:
> > -----Original Message-----
> > From: Matt [mailto:matt@epooch.com]
> > 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 <torben@php.net>
http://www.thebuttlesschaps.com
http://www.hybrid17.com
http://www.inflatableeye.com
+1.604.709.0506