On 19 Apr 2002 [EMAIL PROTECTED] wrote:

>  ID:               16687
>  Updated by:       [EMAIL PROTECTED]
>  Reported By:      [EMAIL PROTECTED]
>  Status:           Bogus
>  Bug Type:         Scripting Engine problem
>  Operating System: Red Hat Linux 7.1
>  PHP Version:      4.2.0
>  New Comment:
> 
> But then why does it work under certain circumstances and not others? 
> Regardless whether intended or not, this is inconsistent behaviour.

Yes it is indeed.

> I also think that having these differences between regular variables
> and the "superglobals" shouldn't be necessary.  If I can't use them in
> the same contexts as regular variables, then I would personally prefer
> the $HTTP_*_VARS instead, because you can.
> 
> I have found my approach to abstracting this difference ($HTTP_*_VARS
> vs. $_*) between PHP versions to be really beneficial to my scripts.  I
> can abstract them both down to one name, and use a single reference to
> the appropriate one instead of sticking if statements every time I need
> to know which one to use.

Then just stick to $HTTP_*_VARS and you dont need no fancy references. 
This works with akk versions of PHP. But I strongly recommend to use the 
$_* variant for new projects.

regards,

Derick

> Previous Comments:
> ------------------------------------------------------------------------
> 
> [2002-04-19 10:33:59] [EMAIL PROTECTED]
> 
> You can't use superglobals indirectly, check this:
> 
> $t = "_GET";
> var_dump ($$t);
> 
> doesn't work neither, and it wasn't supposed to work.
> 
> However, this does work (because $HTTP_GET_VARS is not a superglobal):
> 
> $t = "HTTP_GET_VARS";
> var_dump ($$t);
> 
> 
> Derick
> 
> ------------------------------------------------------------------------
> 
> [2002-04-18 19:09:09] [EMAIL PROTECTED]
> 
> reclassified
> 
> ------------------------------------------------------------------------
> 
> [2002-04-18 17:30:28] [EMAIL PROTECTED]
> 
> It seems to be happening only under certain contexts.  Here is a script
> that works fine:
> 
> <?php
> 
> $test = 'asdf';
> 
> define ('_TEST', 'test');
> 
> echo 'constant: ';
> print_r (${_TEST});
> 
> echo '<br />direct: ';
> print_r ($test);
> 
> ?>
> 
> And here is code that does not:
> 
> <?php
> 
> if (PHP_VERSION < '4.1.0') {
>       define ('_GET', 'HTTP_GET_VARS');
> } else {
>       define ('_GET', '_GET');
> }
> 
> class CGI {
>       var $param = array ();
> 
>       function CGI () {
>               global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_POST_FILES;
> 
>               if (${_GET}) {
>                       reset (${_GET});
>                       while (list ($k, $v) = each (${_GET})) {
>                               if (get_magic_quotes_gpc () == 1) {
>                                       $this->{$k} = stripslashes ($v);
>                               } else {
>                                       $this->{$k} = $v;
>                               }
>                               array_push ($this->param, $k);
>                       }
>               } else {
>                       echo '<br />_GET value: '; print_r (_GET);
>                       echo '<br />$_GET value: '; print_r ($_GET);
>                       echo '<br />${_GET} value: '; print_r (${_GET});
>               }
>       }
> }
> 
> $cgi = new CGI;
> 
> echo '<br />$cgi value: '; print_r ($cgi);
> 
> ?>
> 
> ------------------------------------------------------------------------
> 
> [2002-04-18 16:43:17] [EMAIL PROTECTED]
> 
> Constants do not appear to be interpreted properly in the following
> context:
> 
> ${CONSTANT}
> 
> I found this problem with the following code:
> 
> <?php
> 
> if (PHP_VERSION < '4.1.0') {
>   define ('_GET', 'HTTP_GET_VARS');
>   // etc.
> } else {
>   define ('_GET', '_GET');
>   // etc.
> }
> 
> print_r (${_GET});
> 
> ?>
> 
> This should print out the $_GET hash in 4.2.0RC4, but it prints
> nothing.  A quick check of the _GET constant shows that it does contain
> the proper value.
> 
> I compile php with:
> 
> './configure' '--with-pgsql=shared' '--with-gd'
> '--with-mysql=/usr/local/mysql'
> '--with-apxs2=/usr/local/apache2/bin/apxs' '--enable-shmop'
> '--enable-xslt' '--with-xslt-sablot'
> 
> Thanks!
> 
> ------------------------------------------------------------------------
> 
> 
> -- 
> Edit this bug report at http://bugs.php.net/?id=16687&edit=1
> 


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

Reply via email to