Global funktioniert nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Global funktioniert nicht

    Hi,
    in einer index-Datei führe ich
    PHP-Code:
    require_once 'xxx/files/inc/configuration.inc.php';
    require_once 
    'xxx/files/inc/applikation.php'
    aus.
    In der configuration.inc.php wird nur ein Array erzeugt.

    PHP-Code:
    <?

    class xxx {
        
        var $config;
            
        function xxx() {
            
            global $system;
            
            echo "TEST" ;
            
            print_r ( $system ) ;
            
            echo "TEST2" ;

            $this->config = $system;
            
            if( $this->config["DB_Connect"] == TRUE ) $this->class_new( "db" );
            
        }
        
        
        function class_new ( $phpklassen ) {
            
            global $system;
            
            $klassen = explode( ",", $phpklassen );
            
            if( is_array( $klassen ) ) {
                
                foreach( $klassen as $klasse ) {
                    
                    if( !is_object( $this->$klasse ) ) {
                        
                        include_once($this->config['class_dir'] . "/class.".$klasse.".php");
                           
                           $this->$klasse = new $klasse;
                          
                       }
                   }
              }
        }
        
    print_r ( $system ) ;
    $xxx = new xxx;
    $xxx->class_new( 'xxxsmarty' );

    ?>
    Beim ersten print_r ( $system ) wird der Array ordnungsgemäß ausgegeben. Beim zweiten im Konstruktor allerdings, wird er nichtmehr ausgeprintet.
    Hat jemand einen Tipp warum der Fehler besteht ?
    Zuletzt geändert von Daether; 26.09.2007, 14:11.

  • #2
    kannst du bei deiner zweiten ausgabe von $system irgendwas anderes ausgeben? ich glaube kaum, da du dich nicht innerhalb einer methode der klasse befindest.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      hab etwas editiert .

      Also die Worte "TEST" und "TEST2" werden ausgegeben.

      Kommentar


      • #4
        Probier doch mal die global vor den funktionen zu definieren:

        PHP-Code:
        class xxx {
            global 
        $system;
            var 
        $config;        
            function 
        xxx() {
            .... 

        Kommentar


        • #5
          Und was soll das werden? Gib $system gefälligst im Konstruktor mit statt unsinnig global zu verwenden.
          Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

          Kommentar


          • #6
            Ich weiß auch, dass global zu benutzen kein feiner Programmierstil ist, allerdings wollte ich nicht das programm eines anderen komplett umschreiben.
            Dafür fehlt mir momentan einfach die Zeit .

            Kommentar


            • #7
              Ist $system denn überhaupt global definiert? In folgendem Schnippselchen wäre es imho nicht definiert:
              PHP-Code:
              // index.php
              <?php
                
              function do() {
                  include 
              "other.php";
                }
                do();
              ?>
              // other.php
              <?php
                $system 
              'foo';
                class 
              xxx {
                  var 
              $config;        
                  function 
              xxx() {
                     global 
              $system;
                     
              var_dump$system );
                  }
                }
              ?>
              Da die Datei other.php im Bereich der Funktion do() ausgeführt wird und nicht im globalen Bereich. Vielleicht hilft dir das irgendwas!

              Kommentar

              Lädt...
              X