1

ArrayAccessorを使用してオブジェクトを実装する場合ArrayObject、一部の操作では完全に通常の配列になります (たとえば、foreach()ステートメント)。しかし、そう簡単にはだまされず、オブジェクトだと不平を言う人もいます。

[E_WARNING] call_user_func_array() expects parameter 2 to be array, object given

これは矛盾していると思います。誰かがこの背後にある理由を説明できますか? これを回避する方法はありますか?

バックエンド コードをサポートするためにこれが必要です。配列が必要で (パラメーターとして に渡されますcall_user_func_array())、場合によってはそれを変更します。ただし、配列に加えられた変更を新しい変数にミラーリングする必要があるため、ArrayAccessオブジェクトを介してそれを実行しようとしました (詳細はこちら)。

4

2 に答える 2

1

あなたの関数名はかなり明示的であり、ドキュメントの説明は配列が必要な理由を示しています

解決策は、オブジェクトを配列内にラップすることです

call_user_func_array('callback', array( $myObject));
于 2012-10-30T14:04:48.200 に答える
0

一般的に言えば、配列を操作するネイティブ関数でArrayObjector および実装者を使用することはできません。ArrayAccessこれらは、通常、トラバースなどに配列表記を使用する言語構造で使用できます。

于 2012-10-30T14:11:41.797 に答える