Sie haben eine echte Lösung in PHP 7.1.
http://php.net/manual/en/migration71.new-features.php#migration71.new-features.iterable-pseudo-type
Die iterable pseudo-Typ ist, was Sie wollen. Jedes Array oder Traversable-Typ (dies ist die Basisschnittstelle für Iteratoren) wird diese Prüfung bestehen.
Nun, dies für jedermann klar zu machen, die in der Tiefe will bekommen super, ja, es werden Ränder Fällen. Sie sollten über diese Randfälle nachdenken und sie selbst lösen. Wenn Sie jedoch sicherstellen möchten, dass jemand ein traversierbares Element eingibt, auf das nicht über einen Schlüssel zugegriffen werden kann, können Sie dies tun.
http://php.net/manual/en/function.iterator-to-array.php
nun unabhängig davon, was sie in der Art-Hinweis übergeben, wird ein Array, aber diese die Vorteile der Verwendung eines Generators zur Speicherreduzierung entfernen können. Es sollte offensichtlich sein, aber anscheinend ist es nicht, also hier ist es. Sie, der Programmierer, sind dafür verantwortlich, Ihre speziellen Anwendungsfälle für den Code zu ermitteln und wie Sie ihn verwenden wollen und welchen geeigneten Anwendungsfall der Code hat.
Da dies immer noch nicht klar genug ist, nehmen wir an, Sie versuchen, etwas einzugeben, das typhinweisbar ist und erwartet, dass eine bestimmte Methode oder Variable existiert, dann machen Sie schlechtes Programmieren. Sie sollten einen Vertrag implementieren, der den gesuchten Rückgabetyp enthält, und diesen anstelle eines generischen Typs übergeben. Wenn Sie nur etwas Generisches wie Schleifen machen wollen, sind das iterierbare Typen. Der Hinweis ist im Namen: Iterate.
Nicht die Antwort, auf die ich gehofft habe, aber das Gießen zu einem Array ist eigentlich eine nette Idee. Danke – Supericy
Dies ist eine schlechte Praxis, sollte ein Client nicht tun, was die Bibliothek tun kann. – danidacar
Es ist egal, ob ArrayAccess implementiert ist oder nicht. AFAIK das einzige, was die Casting-Funktionalität ändern wird, ist das Unterklassen der ArrayObject-Klasse. Hoffentlich macht https://wiki.php.net/rfc/union_types es eines Tages (nicht im Zusammenhang mit Casting offensichtlich, aber auf die OP-Frage);) –