Mareike E.: $GLOBALS innerhalb einer Klasse

Hallo zusammen,
ich habe folgendes probiert und war etwas verwundert, wieso es nicht funktionierte:

#################################################
class test{
  function bla(){
    print 'Hallo';
    $GLOBALS['TEST'] = 'Hallo';
  }
}

<?php
  $var = new bla;
  $var->bla();
  print_r($GLOBALS);
?>
#################################################

Ich hätte erwartet die globale Variable 'TEST' jetzt in meinem $GLOBALS Array zu haben. Dem ist aber nicht so. Kann ich innerhalb einer Klasse keine Globalen Variablen definieren?

  1. Moin!

    class test{
    }

    $var = new bla;

    Fällt dir was auf?

    Ich hätte erwartet die globale Variable 'TEST' jetzt in meinem $GLOBALS Array zu haben. Dem ist aber nicht so. Kann ich innerhalb einer Klasse keine Globalen Variablen definieren?

    Zumindest solltest du sowas niemals tun. Insbesondere, wenn du mit Klassen und OOP arbeitest - verwende immer die vorgesehenen Methoden zur Werte- und Ergebnisrückgabe.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. »

      Fällt dir was auf?

      Ja jetzt wo du es sagst schon. Aber das war nur schnell hingekritzelt. Also die Klasse an sich funktioniert wunderbar.

      Zumindest solltest du sowas niemals tun. Insbesondere, wenn du mit Klassen und OOP arbeitest - verwende immer die vorgesehenen Methoden zur Werte- und Ergebnisrückgabe.

      • Sven Rautenberg

      Ich verwende die vorgesehenen Methoden ja auch. Ich brauche die globale Variable nicht für den Rückgabewert oder so. Das sah im Beispiel vielleicht so aus. Ich will bestimmte Variablen, die in den Methoden benutzt werden einfach nur global machen um diese dann zum debuggen zu benutzen.

  2. echo $begrüßung;

    Ich hätte erwartet die globale Variable 'TEST' jetzt in meinem $GLOBALS Array zu haben. Dem ist aber nicht so. Kann ich innerhalb einer Klasse keine Globalen Variablen definieren?

    Auch mit der Korrektur beim Initialisieren der Klasse kann ich den Fehler mit dem angegebenen Code nicht nachvollziehen.

    echo "$verabschiedung $name";

    1. Auch mit der Korrektur beim Initialisieren der Klasse kann ich den Fehler mit dem angegebenen Code nicht nachvollziehen.

      Gibt es vielleicht Einstellungen am Server, an denen es liegen kann?

      1. echo $begrüßung;

        Auch mit der Korrektur beim Initialisieren der Klasse kann ich den Fehler mit dem angegebenen Code nicht nachvollziehen.
        Gibt es vielleicht Einstellungen am Server, an denen es liegen kann?

        Nein. Wenn du das Beispiel, wie du sagtest, "nur schnell hingekritzelt" hast, dann ändere es bitte so, dass du selbst mit diesem Beispiel auch das Verhalten nachvollziehen kannst. Und gib bitte auch die eingesetzte PHP-Version an. Wenn du meinst, es könnte an den Systemeinstellungen liegen, dann verschweige diese nicht, und veröffentliche mindestens die Ausgabe von phpinfo(INFO_CONFIGURATION);

        (Ich vermute, dass der Fehler irgendwo anders in deinem Programm liegt.)

        echo "$verabschiedung $name";

        1. Ok also nochmal:

          ###############################
          class test{
            function bla(){
              $GLOBALS['TEST'] = 'Test';
            }
          }

          $var = new test;
          $var->bla();
          ###############################

          Soviel zum Script.

          PHP Version ist 5.1.4
          Ich benutze die neuste Xampp Version und alle Einstellungen sind von mir unverändert.

          1. echo $begrüßung;

            Ok also nochmal:
            [...]
            Soviel zum Script.

            Ja, genau so habe ich das auch probiert (inklusive eines print_r($GLOBALS);) und den Fehler nicht nachvollziehen können. Meine Ausgabe sieht (mit vorangestellten <pre>) so aus:

            Array
            (
                [GLOBALS] => Array
             *RECURSION*
                [_POST] => Array
                    (
                    )

            [_GET] => Array
                    (
                    )

            [_COOKIE] => Array
                    (
                    )

            [_FILES] => Array
                    (
                    )

            [var] => test Object
                    (
                    )

            [TEST] => Hallo
            )

            Die Frage, ob du den Fehler mit dem von dir geposteten Code auch noch erhältst, hast du nicht wirklich beantwortet. Ich entnahm deinen früheren Aussagen, dass das Problem eigentlich in einer komplexeren Umgebung auftritt ...

            PHP Version ist 5.1.4
            Ich benutze die neuste Xampp Version und alle Einstellungen sind von mir unverändert.

            Die neueste Xampp-Version (für Windows und Linux) wird derzeit mit PHP 5.1.6 ausgeliefert. Es wäre auch deutlich weniger Aufwand einen Auszug von phpinfo() zu erstellen, als das Xampp zu ziehen und zu installieren.

            echo "$verabschiedung $name";