ArrayIteratorにはいくつか問題があります(実際、ArrayObjectと同じ問題があります)。ArrayIteratorまたはArrayObjectをimplodeで使用するにはどうすればよいですか?
すべての99%について、私の拡張されたArrayIteratorは配列のように動作し、うまく動作しています。
残念ながら、implode()にはArrayIterator(またはArrayObject)が与えられているのが好きではありません。
拡張されたArrayIteratorで実装する他のクラスやその他のオーバーライドする方法を示唆している場所では、どこにでもドキュメントを見つけることができません。
誰でもこの作業を行う方法を提案できますか? (注:implodeを使用するたびに配列にキャストするのは解決策ではありません。この配列のようなオブジェクトを配列として正確に動作させ、コードを使用してケア/キャストする必要はありません)
ありがとうございました。私はそれが私が知らなかった有用な機能であるため、これを受け入れられた答えとして設定します。しかし、これは、呼び出し先が配列を扱っていないことを知っていて、それをキャストすることを必要とします。それは遅く、余分なコードを必要とし、あるかもしれないブラックボクシングのアイデアを嫌う。おそらく、PHP開発者は、すべての配列関数がArrayクラスの子孫オブジェクトを受け入れるようにするか、Arrayやそれに類するものが共有する共通の基底を受け入れることを望むでしょう。 –
@OliComber:それは間違いなく良いだろうが、率直に言って、私は本当にそれが起こって見ることができないような大きな変化であろう。 – Jon