• WEB DESIGN AGENCY

  • Sede Principale

    Multimedia Web

    Blog Studio Web

    Studio Web

    Sede a Venezia

    Web Agency Venezia

    Sede a New York

    Nyc Web Design

    Sede International

    Web Designer International

    Sito Demo One Page

    Spaghetti Web

    Landing page

    Savinus

  • smartphone

    Seguici sul tuo smartphone

  • web-designer-ancona
  • AGENZIA WEB

Home / News / Pseudo-tipi iterabili in PHP 7.1

Pseudo-tipi iterabili in PHP 7.1


Traversable viene impiegata per verificare se uno specifico elemento può essere utilizzato o meno all’interno di un ciclo foreach, mentre gli pseudo-tipi iterabili hanno un comportamento simile a callable e possono essere utilizzati nei parametri e nei tipi di ritorno:

function foo(iterable $iter) 
    foreach ($iter as $val) 
        // ...
    

Fino a PHP 5.6, e anche in PHP 7.x fino all’ultimo aggiornamento, era possibile eseguire un codice come il seguente:

function dump(array $iter)

    var_dump($iter);

dump([100, 200, 300]);
dump(new Collection());

Ma nel caso in cui la funzione non fosse stata in grado di accettare un valore iterabile si sarebbe verificato un errore simile a quello presente nell’output proposto di seguito:

array(3) 
  [0]=>
  int(100)
  [1]=>
  int(200)
  [2]=>
  int(300)

Catchable fatal error: Argument 1 passed to dump() must be of the type array, object given..

In PHP 7.1 le cose cambiano grazie ai pseudo-tipi iterabili, notate infatti come nella funzione array possa essere sostituito con iterable:

function dump(iterable $iter)

    var_dump($iter);


dump([100, 200, 300]);
dump(new Collection());

Il risultato di una nuova avviamento non presenterà più l’errore visualizzato in precedenza:

array(3) 
  [0]=>
  int(100)
  [1]=>
  int(200)
  [2]=>
  int(300)

object(Collection)#2 (0) 

E’ da specificare che anche se PHP ammette l’utilizzo di un qualsiasi oggetto in un foreach, iterable accetta soltanto quelli che implementano Traversable, i proprietà per iterable devono quindi essere appositamente concepiti per le iterazioni; iterable può essere adottato inoltre come tipo di ritorno che indichi una funzione destinata a restituire un valore iterabile, ma se il valore di ritorno non dovesse essere un array o un’istanza di Traversable verrà generato un errore (TypeError).






Source link

Send this to a friend