2015-07-03 81 views
0

我目前在頁面加載時聲明的PHP中創建一個對象。該對象的目的是通過一個名爲「checkHeartbeat」的函數來檢查客戶端與遠程服務之間的連接。這個函數將被間歇調用來查看連接是否通過AJAX存在。PHP實現測試對象

我想實現一個測試參數改變對結果的連接,而查詢遠程服務:

  • 失敗
  • 成功
  • 失敗後X嘗試
  • 成功x嘗試

該參數當前通過由對象的構造函數拾取並通過$ _GET放置到變量中的URL傳遞。每次checkHeartbeat函數被AJAX調用時,它都會檢查是否設置了'test'變量。

我的目標是在checkHeartbeat的每次調用中取消此檢查,但我不確定執行此操作的最佳方法。 AJAX查詢將始終調用「checkHeartbeat」,因此我一直在研究擴展/更改此功能。

我試圖重新定義構造中的$ heartbeat對象作爲測試對象,因此覆蓋了checkHeartbeat函數,但這不起作用,只返回連接是活的。這是我重新考慮的代碼,作爲預期結果的演示。

class heartbeat { 
    public function __construct() { 
     if(isset($_GET['test'])) { 
      $heartbeat = new testHeartbeat; 
     } 
    } 
    public function checkHeartbeat() { 
     echo 'Live connection works!'; 
    } 
} 
class testHeartbeat { 
    public function checkHeartbeat() { 
     echo 'Test connection works!'; 
    } 
} 

$heartbeat = new heartbeat; 
$heartbeat->checkHeartbeat(); 

展望PHP對象還我試圖看看使用對象接口來定義一個單獨的函數但是我不知道如何做到這一點的工作,如果它仍然會通過只調用一個函數工作。

$heartbeat->checkHeartbeat(); 

我的查詢,是什麼改變了「checkHeartbeat」功能,如果測試參數已經被設置在每個AJAX調用,只有做到這一點的物體的初始結構不檢查的最佳方法。如果測試參數已通過,checkHeartbeat將僅返回測試狀態,或者如果未設置測試參數,則立即向遠程服務發出呼叫。

+0

我不能調用testHeartbeat()函數的checkHeartbeat()函數,因此它不會被調用,也「如果變量設置即使參數」我沒有看到變量,我只看到參數$ _Get ['test']。請正確解釋你的問題 –

+0

我不明白你的問題。 1-爲什麼要測試連接是否在頁面加載後立即生效? 2-您需要Ajax調用幫助,還是管理該部分? 3-什麼是你需要從PHP? –

回答

0

我嘲笑這玩弄和做的工作。 我相信有更好的方法,實際上更乾淨。 我沒有找到一種方法來修改同一個對象內的公共變量實例。 希望這會有幫助:

class heartbeat { 

    public $foo; 

    public function __construct() 
    { 
     $this->checkTest(); 
     return $this->foo; 
    } 

    public function checkTest() 
    { 
     if(isset($_GET['test'])) 
     { 
      $this->foo = 'true'; 
     } 
     else 
     { 
      $this->foo = 'false'; 
     } 
    } 
    public function __toString() 
    { 
     return $this->foo; 
    } 
    public function checkHeartbeat() { 
     echo 'Live connection works!'; 
    } 
} 
class testHeartbeat { 
    public function checkHeartbeat() { 
     echo 'Test connection works!'; 
    } 
} 

new heartbeat()=='true' ? $heartbeat = new testHeartbeat() : $heartbeat = new heartbeat(); 
$heartbeat->checkHeartbeat(); 

Bb!

+0

我通過檢查header.php文件中完美工作的$ _GET來實現類似的方式。我唯一的做法是有更好的方法來做到這一點,只有在創建頁面時調用一個對象? – Veljex