[PHP] OOP - "Externe" Variablen überprüfen.

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Coksnuss, 13. Februar 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 13. Februar 2009
    OOP - "Externe" Variablen überprüfen.

    Hallo,

    ich weiß leider nicht wie ich das Problem am besten beschreibe, deshalb auch die etwas ausdrucksschwache Überschrift.
    Bei Google habe ich deshalb auch nichts gefunden.

    Also am besten ein praktisches Beispiel:
    PHP:
    class  Hauptgebaeude
    {
      private 
    $level ;
      
      public function 
    __construct ()
      {
        
    $this -> level  3 ;
      }

      public function 
    getLevel ()
      {
        return 
    $this -> level ;
      }
    }
    PHP:
    class  Kaserne
    {
     private 
    $buildable ;
     private 
    $hauptgebaeude ;
     public function 
    __construct (& $hauptgebaeude )
     {
       
    $this -> hauptgebaeude  $hauptgebaeude ;
       
    $this -> buildable  $this -> checkIfBuildable ();
     }

     public function 
    checkIfBuildable ()
     {
      if(
    $this -> hauptgebaeude -> getLevel () >=  3 )
        return 
    true ;
      return 
    false ;
     }
    }
    Sodele... Wie lös ich das jetzt am besten.
    Es geht also darum, das die Eigenschaft "buildable" von der Klasse Kaserne auf true gesetzt werden soll wenn die Eigenschaft "Level" von der Klasse Hauptgebaeude 3 oder höher ist.

    So, nun will ich aber keine Referenz von einer Instanzierung der Klasse Hauptgebäude mitübergeben sondern das irgentwie "sauberer" lösen.

    Was fällt euch ein wie man sowas am besten macht?

    Vielen Dank schonmal =)
     
  2. 13. Februar 2009
    AW: OOP - "Externe" Variablen überprüfen.

    Wie wärs mit ner statischen Eigenschaft bzw. Funktion in der Klasse Hauptgebaeude?
    Ansonsten halte ich das so wies ist für korrekt...
     
  3. 13. Februar 2009
    AW: OOP - "Externe" Variablen überprüfen.

    Hey,

    ich hoffe mal ich lauf jezz damit nicht voll gegegen die Wand, aber ich probiere es mal

    Wenn du die Klasse Hauptgebäude lädst, nutze keine normale Variable sonderne eine Globale:

    PHP:
    $GLOBALS [ 'haupt' ] = new  Hauptgebaeude
    In der Klasse Kaserne kannst du dann die Globale ansprechen und auslesen:

    PHP:
    if( $GLOBALS [ 'haupt' ]-> level  >=  3 ){
      
    $this -> buildable  true ;
    }
    Gruß Blackbird89
     
  4. 13. Februar 2009
    AW: OOP - "Externe" Variablen überprüfen.

    verwende doch einfach singleton-pattern

    PHP:
    <? php
        
    class  Hauptgebaeude
        
    {
            private static 
    $_instance  null ;
            
            private 
    $_level  0 ;
            
            private function 
    __construct ()
            {
                
    $this -> _level  3 ;
            }
            
            public function 
    getLevel ()
            {
                return 
    $this -> level ;
            }
            
            public static function 
    getInstance ()
            {
                if(!(
    self :: $_instance  instanceof  self ))
                    
    self :: $_instance  = new  self ;
                    
                return 
    self :: $_instance ;
            }
        }
        
        class 
    Kaserne
        
    {
            private 
    $_buildable  false ;
            
            public function 
    __construct ()
            {
                
    $this -> _buildable  $this -> checkBuildable ();
            }
            
            public function 
    checkBuildable ()
            {
                if(
    Hauptgebaeude :: getInstance ()-> getLevel () >=  3
                    return 
    true ;
                    
                return 
    false ;
            }
        }
    ?>
    aja, so nebenebei: seit php5 wird bei instanzen automatisch ne referenz übergeben
    PHP:
    <? php
        
    class  foo
        
    {
            public 
    $bar  1 ;
        }
        
        
    $foo  = new  foo ();
        
        function 
    bar ( foo $baz )
        {
            
    $baz -> bar  2 ;
        }
        
        
    bar ( $foo );
        
        print 
    $foo -> bar //2
    ?>
     
  5. 13. Februar 2009
    AW: OOP - "Externe" Variablen überprüfen.

    Hmm Murdoc seine Idee finde ich am besten! Wusste bisher garnicht das sowas geht.
    Genausowenig wie "Observer". Das wurde mir nämlich auch empfohlen und ist perfekt für das was ich brauche.

    Vielen Dank für eure Antworten deshalb für alle ne (kleine) BW =)
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.