1

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

我的对象.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;
}

}

网络服务 GetKey.php

include 'MyObject.php';

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

我访问 GetKey.php 文件时它总是回显“创建新实例”

4

1 回答 1

1

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

你不会保存一个对象并在任何地方使用它(对于所有用户)..你在 php 中 :) 你可以将它存储在任何地方......但是如果你在一个函数中,那么当你在外面时它会被销毁功能...

在 web 服务中,您不使用会话,因为它在下一次操作调用时不存在

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

PHP用户得到响应时,一切都被破坏了......(只有会话是一个例外)......一个会话就像java或任何其他语言......你拥有它/用户,你可以在请求时修改它。 ..您没有类似的东西applicationScope并为所有用户存储所有内容...在每次请求时都会重新创建所有内容

于 2013-03-03T16:35:52.463 回答