我正在寫一個class(散列),它增加了數組的行爲。實例化的對象應該可以與基本數組互換,所以我可以將它傳遞給需要數組的方法。 另外我希望能夠將對象投射到陣列PHP:使對象行爲像陣列
它應該通過的測試是here。
我以爲實現ArrayAccess就足夠了,但事實並非如此。
或者可能實施了__toArray()
方法,如toString()
用於投射字符串,但它也不起作用。
編輯:
$hash = new Hash(array(
'foo' => 'bar',
'bar' => 'barfoo',
));
function echoArray(array $array) {
print_r($array);
}
echoArray($hash);
// Catchable fatal error: Argument 1 passed to echoArray()
// must be of the type array, object given
print_r((array) $hash);
/*
Array
(
[*_values] => Array
(
[foo] => bar
[bar] => barfoo
)
)
*/
是否有實現這一行爲的一種方式?
預先感謝您。
聽起來像一個偉大的想法。 ..這裏有個問題嗎? – blockhead
這不是關於原始帖子,而是注意到你在Hash.php中使用get_called_class():164。如果你想避免它,你可以嘗試刪除它並使用「新的靜態($ params);」在Hash.php上:165。 –
@NikoHujanen取決於他必須支持哪個版本的PHP(關於get_called_class() - 上面的帖子)。 – frodeborli