phpbar.de logo

Mailinglisten-Archive

[php] Superglobals in Klassen

[php] Superglobals in Klassen

Alex Emken php at emken.com
Mon Okt 2 14:39:12 CEST 2006


Andreas Stagl wrote:
> Hallo nochmal,
> 
> bin grad auf ein Phänomen gestoßen, das ich mir nicht ganz erklären kann.
> 
> Folgendes Skript klappt einwandfrei, wenn ich es in einem "prozeduralen" 
> PHP-Skript aufrufe:
> 
> <?php
> $transmit_method='POST';
> print_r (${'_'.$transmit_method});
> ?>
> 
> Sobald ich genau den selben Code innerhalb einer Klassen-Funktion aufrufe...
> 
> <?php
> class test
> {
>   function show()
>   {
>      $transmit_method='POST';
>      print_r (${'_'.$transmit_method});
>   }
> }
> $test = new test();
> $test->show();
> ?>
> 
> ... heisst es plötzlich "Notice:  Undefined variable: _POST in 
> <skript_name> on line <linenumber>."
> 
> Verzichte ich dort dann aber den Teil, wo der Name der auszugebenden 
> Variable dynamisch gebildet wird, und verwende stattdessen "hardcoded" 
> fix $_POST, funktioniert wieder alles:
> 
> <?php
> class test
> {
>   function show()
>   {
>      print_r ($_POST);
>   }
> }
> $test = new test();
> $test->show();
> ?>
> 
> Sieht für mich nach einem BUG in PHP aus, oder hab ich da irgendwo nen 
> Denkfehler?
> 
> Könnte das Problem natürlich auch über ein switch bzw if Konstrukt 
> umgehen (werd ich vorübergehend vermutlich auch müssen), aber schön ist 
> das nicht.

Hi,

nur als Hinweis aus dem Manual:

| Warning
|
| Please note that variable variables cannot be used
| with PHP's Superglobal arrays within functions or
| class methods.

Also eher ein "Feature", als ein Bug. ;)

Gruß,
Alex

php::bar PHP Wiki   -   Listenarchive