2012-11-08 32 views
2
$obj = new stdClass(); 
echo gettype($obj); //object 

function abc(object $obj) { 
    return; 
} 

abc($obj); //Catchable fatal error: Argument 1 passed to abc() must be an instance of object, instance of stdClass given 

爲什麼叫abc($obj)觸發錯誤開捕致命錯誤:傳遞給ABC變量1()必須是對象的實例,stdClass的實例給出stdClass的和類型提示

回答

14

由於typehinting僅適用於類名稱,接口名稱或array。在php對象模型中沒有共同的祖先object(就像在C#中的其他編程語言中一樣)。你必須指定的是stdClass

+2

謝謝。 'callable'也可用於打字 – Kirzilla

+0

@Kirzilla:哦,不知道'callable' – zerkms

+1

'callable'也可以讓你通過封閉,這可能會或可能不是你想要的。 –