1

私はPHPを初めて使用し、Webサービスでアクセスできるこのクラスのオブジェクトを保存したいと考えています。このオブジェクトは、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;
}

}

Webサービス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 に答える