2013-06-18 61 views
0

我有接受功能的OAuth object如何測試OAuth對象?

$oauth = new OAuth("abc","def",OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_AUTHORIZATION); 

function get_oauth_header($oauth, $header) 
{ 
    if (!is_string($header)) { 
     return NULL; 
    } 

    $result_headers = explode("\r\n", $oauth->getLastResponseHeaders()); 
    // Do something interesting.... 
} 

我想在函數的頂部添加一個檢查,以確保只有有效的OAuth對象傳遞給函數,如與$header完成變量被檢查它是一個字符串。 我該如何檢查?我試圖用gettype()輸出OAuth對象的類型,但它返回0

回答

1

PHP5引入了一個功能,可以幫助您:type hinting。您可以使用它來要求某些參數成爲某個類的實例。

function get_oauth_header(OAuth $oauth, $header) { 
    // ... 
} 

注意,如果傳遞的$ OAuth是不是OAuth一個實例,這將產生一個致命的錯誤。

作爲一種替代方法,您可以在gettype()的正確軌道上排序,但這隻會報告PHP的內部類型。你需要的是instanceofget_class()

var_dump($oauth instanceof OAuth); // true 
var_dump(get_class($oauth) === 'OAuth'); // true 
+0

感謝您提供全面,翔實的答案,攻擊問題和手頭的問題。很好的答案! – dotancohen