Session Variable Undefined

StupidBoy

Mitglied Gold
Einen schönen guten Abend,

ich schlage mich mal wieder ein wenig mit PHP rum und auch mit der OOP.

Kurz und knackig mein Problem:
Ich defefiniere eine Session in Methode A und will etwas später den Inhalt der Session mit einer anderen Methode ausgeben, alles noch in der selben Klasse.
Dann bekomm ich aber die Medlung "Notice: Undefined variable: userSession".

Was mich nun etwas wundert, dass ich das Problem nicht habe, wenn ich die Session in der selben Methode definiere die die Session-Variable dann auch ausgibt.

Schließlich ist der Sinn der Session ja, dass ich eine Variable hab die nicht in irgendeiner Weise gekapselt ist und erhalten bleibt - so seh ich das zumindest ;).

Das geht nicht:
PHP:
class exampleController extends Zend_Controller_Action
{
    //...
    public function fooAction()
    {
        //...
        $userSession = new Zend_Session_Namespace('userData');
        $userSession->userName = "Mustermann";
        //...
    }
    //...
    protected function testAction(){
        $text = "Hallo" . $userSession->userName;
        $view = $this->initView();
        $view->ausgabe = $text;

    }
}

Und so gehts:
PHP:
class exampleController extends Zend_Controller_Action
{
    //...
    protected function testAction(){
        $userSession = new Zend_Session_Namespace('userData');
        $userSession->userName = "Mustermann";
        $text = "Hallo" . $userSession->userName;
        $view = $this->initView();
        $view->ausgabe = $text;

    }
}
 
Du definierst die Variable nur im Namensraum deiner Methode, nicht innerhalb der Klasse.

So sollte es gehen.

PHP:
class exampleController extends Zend_Controller_Action
{
    protected $userSession;
    //...
    public function fooAction()
    {
        //...
        $this->userSession = new Zend_Session_Namespace('userData');
        $this->userSession->userName = "Mustermann";
        //...
    }
    //...
    protected function testAction(){
        $text = "Hallo" . $this->userSession->userName;
        $view = $this->initView();
        $view->ausgabe = $text;

    }
}
 
Vielen Dank für die schnelle Antwort,

leider heißt es nun: Notice: Trying to get property of non-object :confused:.

//Edit:

Ich hab eine Lösung gefunden, auch wenn mir nicht ganz klar ist, warum es nun funktioniert.
Naja, vielelicht hilft es jemanden.

PHP:
class exampleController extends Zend_Controller_Action
{
    protected $userSession;
    public function preDispatch()
    {
        $this->userSession = new Zend_Session_Namespace('userData');
    }
    //...
    public function fooAction()
    {
        //...
        $this->userSession->userName = "Mustermann";
        //...
    }
    //...
    protected function testAction(){
        $text = "Hallo" . $this->userSession->userName;
        $view = $this->initView();
        $view->ausgabe = $text;

    }
}
 
Zuletzt bearbeitet:
Zurück