tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
606
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    Ich habe ein Objekt das ich beim aufruf einer Methode neu initialisieren möchte.
    Sieht so aus:
    PHP-Code:
    class myclass
    {
      public 
    $var "xyz";

      function 
    reinit()
      {
        ......
      }

    }
    $myclass = new myclass();
    $myclass->var "blub";
    $myclass->reinit(); 
    Mit reinit() soll das Objekt in den Start Zustand zurückgesetzt. Also alle Variablen wieder auf den Voreinstellungen.
    In dem Fall sollte $var wieder "xyz" sein.
    Gibt es dafür eine Funktion oder hat jemand eine Idee?
     

  2. #2
    splasch splasch ist offline Mitglied Brillant
    Registriert seit
    Jul 2004
    Beiträge
    854
    Mit reinit() soll das Objekt in den Start Zustand zurückgesetzt. Also alle Variablen wieder auf den Voreinstellungen.
    In dem Fall sollte $var wieder "xyz" sein.
    Gibt es dafür eine Funktion oder hat jemand eine Idee?
    Dazu braucht du keine Methode

    PHP-Code:
    $myclass = new myclass();
    $myclass->var "blub";
    unset(
    $myclass);
    $myclass = new myclass(); // schon haste ein standard Objekt 
    Mfg Splasch
     

  3. #3
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    doch für mein script brauche ich die methode.
    Meine Fragestellung war wohl zu ungenau.
    Ich möchte dass sich das projekt selbst neu initialisiert beim Aufruf meiner Methode reinit().
     

  4. #4
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    PHP-Code:
    class myclass
    {
      public 
    $var "xyz";
      
      function 
    reinit()
      {
        unset(
    $this);
        return new 
    self;
      }

    }
    $myclass = new myclass();
    $myclass->var "blub";
    echo 
    $myclass->var;
    $myclass $myclass->reinit();  
    echo 
    $myclass->var
    Reicht dir das so?
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  5. #5
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    mh leider nicht ganz.
    Hintergrund ist ein Userobjekt mit dem ich login und logout steuern möchte.
    beim logout sollen die standard vars wieder gesetzt werden (Gastuser).

    PHP-Code:
    class user
    {
        public         
    $id             0;
        public         
    $name         "Guest";
        public         
    $email         "";
        protected 
    $rights     = array();
        private     
    $password "";
        public         
    $regtime     "";

      function 
    reinit()
      {
            unset(
    $this);
                    return new 
    self;
      }

      function 
    logout()
      {
            
    $this->reinit();
      }
    }
    $user -> logout(); 
     

  6. #6
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Und wie möchtest du das ganze realisieren?
    PHP ist eine "per Request" Sprache, d. h. du müsstest das Objekt irgendwie mit dir rumschleppen, denn beim Wechsel der Seite ist das Objekt gestorben...
    Deshalb sehe ich auch ehrlich gesagt innerhalb deines Skriptes keinen Grund für diese Methode.

    Erläuter das doch bitte mal etwas näher?
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  7. #7
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    Mh naja gut ich baue nur zuerst die klasse und binde sie dann in mein script ein die überlegung war nur die wenn ich nach dem logout in meinem script das objekt weiterbenutzen will müsste es auf gast zurück gesetzt werden aber da macht das ganze dann so keinen sinn.
    Trotzdem danke.
     

  8. #8
    Registriert seit
    Mar 2004
    Beiträge
    490
    Ich meine, es müsste vor erstellen des User Objektes schon geklärt sein, ob es ein Gast ist oder ein registrierter User. Bei einem Seitenaufruf prüfst du zum Beispiel durch eine Sessionvariable, ob ein eingeloggter Benutzer die Seite aufruft. Sollte das der Fall sein, dann erstellst du ein Objekt mit dem Parameter, das hier ein bekannter User erstellt werden soll. Wenn ein Gast die Seite aufruft, dann wird einfach kein Parameter übergeben.

    Beispiel
    PHP-Code:
    if($_SESSION['registered_user'] === TRUE) {
       
    $user = new user(array('id' => $_SESSION['id'], 'name' => $_SESSION['name']));
    } ELSE {
       
    $user = new user();
    }


    // Die Klasse dann umschreiben

    class user
    {
        public 
    $id null
        
    public $name null;
        protected 
    $isRegisteredUser FALSE;
      
        function 
    __construct($aUserInfo)
        {
              if(
    is_array($aUserInfo)) {
                    
    $this->id $aUserInfo['id'];
                    
    $this->name $aUserInfo['name'];
                    
    $this->isRegisteredUser TRUE;
              } ELSE {
                    
    $this->isRegisterUser FALSE;
              }
        }


    Sollte der User sich ausloggen (als ein Request auf z.b. logout.php) wird dann die Sessionvariable gelöscht und bei der initalisierung des User Objektes bei einem neuen Request (User drückt F5 im Browser) ist es wieder Gast.
    Andersrum, logged sich der User ein (Request auf Login.php) dann wird die Sessionvariable mit den Userdaten gefüllt.

    Wie Felix halt sagt, bei jedem Request wird der Status des Users bestimmt.
    Ich würde sagen, das es kaum einen Fall gibt, wo sich der Status des Besuchers während der Ausführungszeit des Scriptes ändert. Solltest du durch dein Script durch Prüfungen erkennen, das der User eigentlich ausgelogged sein sollte, dann sollte der Benutzer erstmal darüber informiert werden, zum Beispiel durch eine Ausgabe (Sie wurden ausgelogged) und der User muss dann durch neuaufrufen der Seite einen neuen Request absenden. Da du beim Zwangslogout vorher die Session gekillt haben solltest, wird er aufomatisch wieder Gast sein.

    Vielleicht planst du das ganze aber auch in einem anderen Kontext, den auch ich gerade übersehe.
    Dann würde ich in der reInit() Methide einfach die Klassenvariablen zurücksetzen.

    PHP-Code:
    class user
    {
       const 
    DEFAULT_USER_ID 0;
       const 
    DEFAULT_USER_NAME 'Guest';
       public 
    $id null;
       public 
    $name null;
       
    //...weitere userbezogene Variablen
       
    function reInit()
       {
           
    $this->id self::DEFAULT_USER_ID;
           
    $this->name self::DEFAULT_USER_NAME;
           
    //...weitere userbezogene Variablen
       
    }

    Gruss
     

  9. #9
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    hi ja das initialisieren als gast oder angemeldeter user funktioniert ich wollte wie gesagt nur die eventualität einschliessen nach dem logout den user wieder als gast zu behandeln.
    wie gesagt ist erledigt.
     

Ähnliche Themen

  1. Variable initialisieren
    Von piwi50 im Forum Javascript & Ajax
    Antworten: 14
    Letzter Beitrag: 18.08.09, 11:09
  2. Arraystruktur initialisieren?!
    Von helene1 im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 18.02.08, 13:46
  3. String[] initialisieren
    Von tha_specializt im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 10
    Letzter Beitrag: 29.08.07, 13:18
  4. PopUp initialisieren
    Von Stiff im Forum PHP
    Antworten: 4
    Letzter Beitrag: 16.06.06, 14:08
  5. Antworten: 1
    Letzter Beitrag: 03.01.04, 12:44