Klaasvaak
Klaasvaak

Reputation: 5644

How to save an object in PHP and access it everywhere?

I am new to PHP and I want to save an object from this class which I can access in my webservice this object hold a sessions id which can be used for calling an API:

MyObject.php:

class MyObject {
private $sessionId = '';

private function __construct(){
    $this->sessionId = '';
}

public static function getInstance() {
    if (!$GLOBALS['MyObject']) {
        echo 'creating new instance';
        $GLOBALS['MyObject'] = new MyObject();
    }
    return $GLOBALS['MyObject'];
}

public function getSessionsId() {
    if ($GLOBALS['MyObject']->sessionId == '') {
        // Do curl to get key (works)
        if (!curl_errno($curlCall)) {
            $jsonObj = json_decode($result);
            $sessionID = $jsonObj->session_id;
            $GLOBALS['MyObject']->sessionId = $sessionID;
        }
    }
    return $GLOBALS['MyObject']->sessionId;
}

}

Webservice GetKey.php

include 'MyObject.php';

    $instance = MyObject::getInstance();
    echo $instance->getSessionsId();

The I visit the GetKey.php file it always echoes 'creating new instance'

Upvotes: 1

Views: 2265

Answers (1)

Alex
Alex

Reputation: 2146

what you store in $GLOBALS will be destroyed when the page is loaded... that variable is available only when the response is being created...

You don't save an object and use it everywhere (for all users) .. you are in php :) and you can store it anywhere... but if you're in a function then it will be destroyed when you are outside the function...

And in webservices you don't use session because it won't exist at next operation call

In the case that you want to store that variable for multiple requests of the same user you can store it in $_SESSION and not in $GLOBALS...

In PHP everything is destroyed when the user gets the response... (only session is an exception)... a session is like in java or any other language... you have it / user and you can modify it at request time... you don't have something like applicationScope and store there everything for all users... everything is being recreated at every request

Upvotes: 1

Related Questions