Anzeige:
Ergebnis 1 bis 14 von 14

Thema: OOP Variablen aus einem anderen Klasse benutzen

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.11.2002
    Beiträge
    22

    Post OOP Variablen aus einem anderen Klasse benutzen

    Hi Zusammen!

    Mein Ziel ist es ein Objekt "stat" (statistic) zu bauen.
    Darin soll es das Object "myOverview" geben.
    also:
    PHP-Code:
    $stat = new statistic();
    $stat->myOverview = new Overview(); 
    das Objekt stat hat die Variablen $stat->begin und $stat->end.

    Nun zu meiner eigentlich Frage:
    Wie kann ich innerhalb von Overview auf die Werte von $stat zugreifen?
    Denn eine Methode von Overview benötigt $stat->begin und $stat->end. Ich möchte diese Werte aber ungern beim Aufuf mitgeben müssen und hätte sie gerne automatisch ausgelesen.
    Was müsste ich dafür in die Klasse schreiben (Wenn es überhaupt geht)?

    Hier mal die Klassen skiziert:

    PHP-Code:
    class Statistic{
      var 
    $begin;
      var 
    $end;
      function 
    statistic(){
        echo 
    'foof';
      }
    }

    class 
    Overview{
      function 
    show()
        echo 
    'HIER BENÖTIGE ICH DAS BEGIN UND END AUS STATISTIC';
      }

    Vielleicht hat ja Jemand eine Idee, wie ich das ganze realisieren könnte.
    Viele liebe Grüße und vielen Dank,
    Brocki

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    PHP-Code:
    <?php
    error_reporting
    E_STRICT );

    class 
    Statistic
    {
        private 
    $begin
        public 
    $end "ENDE"
        static function 
    getParam()
        {
            return 
    'foof';
        }

     
    class 
    Overview
    {
        public function 
    show()
        {
           return 
    Statistic::getParam();
        }

        public function 
    nostatic()
        {
            
    $n = new Statistic;
           return 
    $n->end;
        }
    }

    $new  = new Overview;

    var_dump$new->show(), $new->nostatic() );

    ?>
    Geändert von undefined (30-03-2006 um 18:52 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer
    Registriert seit
    16.11.2002
    Beiträge
    22

    Thumbs up

    Vielen Dank!
    Das sollte so hinhauen.
    Ich wäre nie auf die Idee gekomen eine Methode zu basteln, die mir die gewünschten Werte ausgibt.
    Ich dum******

    Ich finde den Weg zwar etwas umständlich, da man ja nur mithilfe einer Methode auf den Wert zugreifen kann aber es geht wohl nicht anders.

    Nochmals vielen Dank und schönen Abend noch!
    Brocki

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Das liegt an den gegebenheiten von PHP.
    Du kannst in einer Static Methode keine weiteren Methoden Includen. das spricht gegen die Logik Ein weiteres Beispiel nicht die feine Art
    PHP-Code:
    <?php
    error_reporting
    E_ALL E_STRICT );

    class 
    MainClass
    {
        public static 
    $my_static 'foo';
    }

    class 
    Overview 
    {
        public function 
    __get$i )
        {
               return 
    MainClass::$$i;
        }

    }

    $new  = new Overview();

    var_dump$new->my_static );

    ?>
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  5. #5
    Registrierter Benutzer
    Registriert seit
    16.11.2002
    Beiträge
    22

    Unhappy

    Hi,
    leider habe ich mich zufrüh gefreut....

    Folgendes Problem:
    PHP-Code:
    <?php
      
    class Statistic {
        var 
    $begin;
        var 
    $end;
        function 
    show_vars() {
          echo 
    $this->begin $this->end;
        }
      }

      class 
    Overview {
        function 
    show_vars2() {
          
    Statistic::show_vars()
        }
      }
      
      
    $myStat = new Statistic();
      
    $myStat->begin '12:00';
      
    $myStat->end '13:00';
      
    $myStat->overview = new Overview();
      
    $myStat->overview->show_vars2()
    ?>
    Leider gibt er nichts aus. Mein Ziel war es aber 12:00 und 13:00 ausgeben zu bekommen. Geht das überhaupt? Also Werte vom übergeordnetem Objekt in einer Klasse benutzen (Klingt irgendwie sehr böse bzw. falsch)

    Grüße und vielen Dank!
    Brocki

  6. #6
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von Brocki
    Hi,
    Leider gibt er nichts aus. Mein Ziel war es aber 12:00 und 13:00 ausgeben zu bekommen. Geht das überhaupt? Also Werte vom übergeordnetem Objekt in einer Klasse benutzen (Klingt irgendwie sehr böse bzw. falsch)

    Grüße und vielen Dank!
    Brocki
    Warum so umständlich?
    Erweitere deine Hauptklasse mit extends und Du hast weniger Sorgen.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  7. #7
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Ja aber erst ab PHP5 - so lange must du wie von Romanday schon geschrieben - erben.
    PHP-Code:
     <?php error_reportingE_ALL | ~E_STRICT ); class Statistic { var $begin; var $end; function Statistic() {} function show_vars() { echo $this->begin $this->end; } } class Overview extends Statistic { function Overview() { parent::Statistic(); } } $myStat->overview = new Overview(); $myStat->begin '12:00'$myStat->end '13:00'var_dump$myStat->end ); ?>
    Geändert von undefined (30-03-2006 um 23:09 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  8. #8
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Also der Forenbug mit UTF-8 und Ajax geht mir so langsam auf den Sack :<( Ab sofort mach ich für jede Korrektur einen neune beitrag auf
    PHP-Code:
    <?php
    error_reporting
    E_ALL | ~E_STRICT );

    class 
    Statistic
    {
        var 
    $begin;
        var 
    $end;
        function 
    Statistic() {}
        function 
    show_vars() { 
           echo 
    $this->begin $this->end;
        }
    }
     
    class 
    Overview extends Statistic
    {
        function 
    Overview()
        {
            
    parent::Statistic();
        }
    }


    $myStat = new Overview();
    $myStat->begin '12:00';
    $myStat->end '13:00';
    var_dump$myStat->end );

    ?>
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  9. #9
    Registrierter Benutzer
    Registriert seit
    16.11.2002
    Beiträge
    22

    Unhappy

    Vielen Dank aber trotzdem schade ...
    Erben macht keinen Sinn, da ich mir sonst zuviel Kram mitschleppe. Ich hätte anstatt nur 3 Werte doppelt ca. 8 Werte und 9 Methoden doppelt obwohl ich sie nur einmal brauche. Das fände ich doch sehr unsauber.

    PHP5 kann ich leider auch nicht einsetzen, da auf der Produktivmaschine leider nur PHP4 läuft und der andere Geraffel angeblich nicht mit PHP5 läuft...

    So übergebe ich halt die Werte beim Erstellen der Objekte. (Ist, wie ich finde, eine Fehlerquelle mehr)

    Viele liebe Grüße und vielen Dank für eure Mühe,
    Brocki

  10. #10
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Nun ja - als Fehlerquelle würde ich so etwas nicht bezeichnen.
    Es liegt halt an der Entwicklungsstufe. Die richtigen einzug in OOP wurde bei PHP erst ab Version 5 vollzogen.
    Wenn ich mal als Beispiel PHP XML/XSLT Programm nehme so hatte ich unter PHP4 in etwa 300 Zeilen für ein Script. Unter PHP 5 benötige ich weniger als die hälfte davon.
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  11. #11
    Registrierter Benutzer
    Registriert seit
    16.11.2002
    Beiträge
    22
    Und nun der vollständigkeits halber:
    Wie würde mein Vorhaben in PHP5 aussehen? (würde mich einfach mal interesieren, auch wenn es für das Projekt unerheblich ist)

    Grüße,
    Brocki

  12. #12
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Eigentlich müsten die obigen Beispiele schon reichen
    Hier mal noch ein Beispiel.
    PHP-Code:
    <?php
    error_reporting
    E_ALL E_STRICT );

    final class 
    Zeiten
    {
       public static function 
    Europe()
       {
          
    setlocaleLC_TIME'de_DE' );
          
    date_default_timezone_set'Europe/Berlin' );
          return 
    strftime"%T"time() );
       }

       public static function 
    England()
       {
          
    setlocaleLC_TIME'en_GB' );
          
    date_default_timezone_set'Europe/Dublin' );
          return 
    strftime"%T"time() );
       }

       public static function 
    Amerika()
       {
          
    setlocaleLC_TIME'en_US' );
          
    date_default_timezone_set'America/New_York' );
          return 
    strftime"%T"time() );
       }
    }


    class 
    Kalender
    {
       public function 
    WeltZeit()
       {
          return 
    "In Berlin ist es "
             
    Zeiten::Europe()
             . 
    " in Dublin "
             
    Zeiten::England()
             . 
    " und in New York " Zeiten::Amerika();
       }
    }


    $kl =& new Kalender;
    echo 
    $kl->WeltZeit();

    ?>
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  13. #13
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von undefined
    Also der Forenbug mit UTF-8 und Ajax geht mir so langsam auf den Sack :<( Ab sofort mach ich für jede Korrektur einen neune beitrag auf
    Was soll den das für ein Bug sein?

    Ändern kannst du auch später eine Nachricht.
    Bei deiner ersten Nachricht hast deinen Code in CODE geklammert
    beim zweiten in PHP.
    CODE wird nach <pre> übersetzt (Default Einstellung), daher die endlos
    Zeile.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  14. #14
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •