我是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文件,它总是回应'创建新实例'
答案 0 :(得分:1)
当您加载页面时,您在$GLOBALS
中存储的内容将被销毁...该变量仅在创建response
时可用...
你不保存一个对象并在任何地方使用它(对于所有用户)..你在PHP :)并且你可以将它存储在任何地方......但是如果你在一个函数中那么它将被销毁你不在这个职能部门......
在webservices中,您不使用会话,因为它在下次操作调用时不存在
如果您要为同一用户的多个请求存储该变量,您可以将其存储在$_SESSION
而不是$GLOBALS
...
在PHP
中,当用户获得响应时,所有内容都被销毁...(只有会话是一个例外)...会话就像在java或任何其他语言中...你有/用户和你可以在请求时修改它......你没有像applicationScope
这样的东西,并且存储了所有用户的所有内容......每次请求都会重新创建所有内容