如何在PHP中保存对象并在任何地方访问它?

时间:2013-03-03 16:31:12

标签: php global-variables

我是PHP的新手,我想从这个类中保存一个对象,我可以在我的webservice中访问该对象,该对象包含一个可用于调用API的会话ID:

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();

我访问GetKey.php文件,它总是回应'​​创建新实例'

1 个答案:

答案 0 :(得分:1)

当您加载页面时,您在$GLOBALS中存储的内容将被销毁...该变量仅在创建response时可用...

你不保存一个对象并在任何地方使用它(对于所有用户)..你在PHP :)并且你可以将它存储在任何地方......但是如果你在一个函数中那么它将被销毁你不在这个职能部门......

在webservices中,您不使用会话,因为它在下次操作调用时不存在

如果您要为同一用户的多个请求存储该变量,您可以将其存储在$_SESSION而不是$GLOBALS ...

PHP中,当用户获得响应时,所有内容都被销毁...(只有会话是一个例外)...会话就像在java或任何其他语言中...你有/用户和你可以在请求时修改它......你没有像applicationScope这样的东西,并且存储了所有用户的所有内容......每次请求都会重新创建所有内容