首先先強調一點:Flash Remoting使用HTTP,HTTP是一個Stateless Protocol,所以它不會記住之前的東西,所以有人以為可以這樣做:
class test { function test() { // Method Table從略... } function setVar($value) { $this->myVar = $value; } function getVar() { return $this->myVar; } }
先用setVar儲下數值後,之後可以用getVar取回數值,是沒有可能的;因為每Call一次Method,一個新Object Instance是會產生。
正常做法,當然是利用Session,AMFPHP 1.0開始,第一次連接一個Class時,已經自動處理了Session,不用再用session_start()。另外,在一個純Flash應用中,不用擔心Flash處理不到Session,當包著SWF的HTML(PHP)載入時,Session已經可以產生(假設Cookie沒有被Disabled)。當PHP通過AMFPHP找不到Session時,它才會產生新的Session(例如Cookie被Disabled),SessionID會通過URL去傳送,所以連去Remoting Gateway時,在NetConnection Debugger,可以看到: ...gateway.php?PHPSESSID=6362...
回到正題,可以使用Session保持Persistence時,例如:
class test { function test() { // Method Table從略... } function setVar($value) { $_SESSION['myVar'] = $value; } function getVar() { return $_SESSION['myVar']; } }
|