Ho un sacco di funzioni che hanno tipo suggerimento per matrici o utilizzare is_array()
per verificare l'array di una variabile.Iterable object e hinting del tipo di array?
Ora sto iniziando a utilizzare oggetti che sono iterabili. Implementano Iterator
o IteratorAggregate
. Saranno accettati come matrici se passano attraverso il tipo di suggerimento o subiscono is_array()
?
Se devo modificare il mio codice, c'è una sorta di generica is_iterable()
, o devo fare qualcosa di simile:
if (is_array($var) OR $var instance_of Iterable OR $var instanceof IteratorAggregate) { ... }
Quali altri iterabile interfacce sono là fuori?
'Iterator' e' IteratorAggregate' non implementano 'Traversable'. Sono interfacce e come tali non hanno alcuna implementazione. Esse * estendono * 'Traversabili'. A parte questo, +1 – Artefacto
Non riesco a vedere cosa sto facendo male, ma non sembra funzionare per le classi che vanno bene con foreach: http://codepad.org/hi373LYg – MSpreij
'foreach' funzionerà con le classi che non sono esempi di queste interfacce. Semplicemente scorre tutte le proprietà dell'istanza. Se si desidera un comportamento personalizzato, è necessario implementare 'Iterator' – NullUserException