{"id":22589,"date":"2016-12-26T14:22:26","date_gmt":"2016-12-26T13:22:26","guid":{"rendered":"http:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/"},"modified":"2016-12-26T14:22:26","modified_gmt":"2016-12-26T13:22:26","slug":"pseudo-tipi-iterabili-in-php-7-1","status":"publish","type":"post","link":"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/","title":{"rendered":"Pseudo-tipi iterabili in PHP 7.1"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div readability=\"50.244514870795\">\n<article readability=\"43\">\n<p>Traversable viene impiegata per verificare se uno specifico elemento pu\u00f2 essere utilizzato o meno all&#8217;interno di un ciclo foreach, mentre gli pseudo-tipi iterabili hanno un comportamento simile a <em>callable<\/em> e possono essere utilizzati nei parametri e nei tipi di ritorno:<\/p>\n<pre class=\"brush:php\">function foo(iterable $iter) &#13;\n    foreach ($iter as $val) &#13;\n        \/\/ ...&#13;\n    &#13;\n<\/pre>\n<p>Fino a PHP 5.6, e anche in PHP 7.x fino all&#8217;ultimo aggiornamento, era possibile eseguire un codice come il seguente:<\/p>\n<pre class=\"brush:php\">function dump(array $iter)&#13;\n&#13;\n    var_dump($iter);&#13;\n&#13;\ndump([100, 200, 300]);&#13;\ndump(new Collection());<\/pre>\n<p>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&#8217;output proposto di seguito: <\/p>\n<pre class=\"brush:php\">array(3) &#13;\n  [0]=&gt;&#13;\n  int(100)&#13;\n  [1]=&gt;&#13;\n  int(200)&#13;\n  [2]=&gt;&#13;\n  int(300)&#13;\n&#13;\nCatchable fatal error: Argument 1 passed to dump() must be of the type array, object given..<\/pre>\n<p>In PHP 7.1 le cose cambiano grazie ai pseudo-tipi iterabili, notate infatti come nella funzione <em>array<\/em> possa essere sostituito con <em>iterable<\/em>:<\/p>\n<pre class=\"brush:php\">function dump(iterable $iter)&#13;\n&#13;\n    var_dump($iter);&#13;\n&#13;\n&#13;\ndump([100, 200, 300]);&#13;\ndump(new Collection());<\/pre>\n<p>Il risultato di una nuova avviamento non presenter\u00e0 pi\u00f9 l&#8217;errore visualizzato in precedenza:<\/p>\n<pre class=\"brush:php\">array(3) &#13;\n  [0]=&gt;&#13;\n  int(100)&#13;\n  [1]=&gt;&#13;\n  int(200)&#13;\n  [2]=&gt;&#13;\n  int(300)&#13;\n&#13;\nobject(Collection)#2 (0) &#13;\n<\/pre>\n<p>E&#8217; da specificare che anche se PHP ammette l&#8217;utilizzo di un qualsiasi oggetto in un foreach, <em>iterable<\/em> accetta soltanto quelli che implementano <em>Traversable<\/em>, i propriet\u00e0 per <em>iterable<\/em> devono quindi essere appositamente concepiti per le iterazioni; <em>iterable<\/em> pu\u00f2 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&#8217;istanza di Traversable verr\u00e0 generato un errore (<em>TypeError<\/em>). <\/p>\n<p>&#13;<br \/>\n          <!--div class=\"sharelink\">\n              \n\n<ul>\n                  \n\n<li class=\"facebook\"><a href=\"#\" onclick=\"window.open( 'https:\/\/www.facebook.com\/sharer\/sharer.php?u='+encodeURIComponent('http:\/\/blog.html.it\/21\/12\/2016\/pseudo-tipi-iterabili-in-php-7-1\/'),'condividi l'articolo su facebook', 'width=626,height=436,location=no,directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no'); return false;\">Facebook<\/a><\/li>\n\n\n                  \n\n<li class=\"twitter\"><a href=\"#\" onclick=\"window.open( 'https:\/\/twitter.com\/share?url=http%3A%2F%2Fblog.html.it%2F21%2F12%2F2016%2Fpseudo-tipi-iterabili-in-php-7-1%2F&via=html_it&text=Pseudo-tipi%20iterabili%20in%20PHP%207.1','condividi l'articolo su twitter', 'width=626,height=436,location=no,directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no'); return false;\">Twitter<\/a><\/li>\n\n\n              <\/ul>\n\n\n          <\/div-->&#13;<br \/>\n          &#13;<br \/>\n\t\t<\/article>\n<div readability=\"5.2403100775194\">\n            <!--\n\n<style>\n\n.newletter-item, .newsletter-box \n  \/*float: left;\n  margin: 5px 0 20px 0;*\/\n  display: block;\n  width: 100%;\n\n\n.newletter-item, .newsletter-box p \n    font-size: 18px;\n    letter-spacing: 0.3px;\n    line-height: 28px;\n    padding: 0 0 34px 0;\n    color: #161616;\n    font-family: 'Alegreya', serif;\n\n\n.newletter-item, .newsletter-box p span \n  font-weight: bold;\n\n\n.newsletter-box img\n    width: 48px;\n    height: auto;\n    margin: 0 auto 34px auto;\n\n\n.newsletter-panel \n  display: block;\n  width: auto;\n  height: 129px;\n  background: url(http:\/\/www.html.it\/wp-content\/themes\/www.html.it\/images\/newsletter\/newsletter-bg.png) no-repeat;\n  position: relative;\n  left: 0px;\n\n.newsletter-panel form \n  margin: 0;\n\n.newsletter-panel .line-item \n  display: block;\n  float: left;\n  margin: 0 0 0 20px;\n  display: block;\n  width: 408px;\n\n.newsletter-panel input \n  float: left;\n  display: block;\n\n.newsletter-panel input[type=\"text\"] \n  margin: 20px 0 10px 20px;\n  width: 395px;\n  height: 26px;\n  line-height: 26px;\n  padding: 2px;\n\n.newsletter-panel input[type=\"radio\"] \n  margin: 6px 3px 0 0;\n\n.newsletter-panel label.radio-item \n  float: left;\n  display: block;\n  font-size: 1em;\n  width: 10px;\n  margin: 6px 10px 0 0;\n\n.newsletter-panel .lable-text \n  display: block;\n  float: left;\n  width: 240px;\n  font-size: 10px !important;\n  color: #333333 !important;\n  line-height: 130%;\n  margin: 6px 0 0 0px !important;\n\n.newsletter-panel .lable-text a \n  color: #333\n\n.newsletter-panel input[type=\"button\"] \n  position: relative;\n  top: -50px;\n  left: 64px;\n  width: 127px;\n  height: 47px;\n  background: url(http:\/\/www.html.it\/wp-content\/themes\/www.html.it\/images\/newsletter\/newsletter-butt.png) no-repeat;\n  background-repeat: no-repeat;\n  border: 0;\n  cursor: pointer;\n\n.newsletter-panel input[type=\"button\"]:hover \n  background-image: url(http:\/\/www.html.it\/wp-content\/themes\/www.html.it\/images\/newsletter\/newsletter-butt-roll.png);\n\n.newsletter-panel label.radio-item \n  font-size: 10px !important;\n\n.error-newsletter\npadding: 10px 20px;\n\n<\/style>\n\n--><\/p>\n<div id=\"newsletter_div\" class=\"newletter-item nav-txt newsletter-box\" readability=\"6.4496124031008\">\n<p>Se vuoi aggiornamenti su <b>Pseudo-tipi iterabili in PHP 7.1<\/b> inserisci la tua e-mail nel box qui sotto:<\/p>\n<\/div><\/div><\/div>\n<p><br \/>\n<br \/><a href=\"http:\/\/feedproxy.google.com\/~r\/htmlitedit\/~3\/QIg6tlnQWIc\/\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Traversable viene impiegata per verificare se uno specifico elemento pu\u00f2 essere utilizzato o meno all&#8217;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) &#13; foreach ($iter as $val) &#13; \/\/ &#8230;&#13; &#13; Fino a PHP&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_s2mail":""},"categories":[37],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Pseudo-tipi iterabili in PHP 7.1 - Web Agency Italia Web Designer realizzazione siti web Italy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pseudo-tipi iterabili in PHP 7.1 - Web Agency Italia Web Designer realizzazione siti web Italy\" \/>\n<meta property=\"og:description\" content=\"Traversable viene impiegata per verificare se uno specifico elemento pu\u00f2 essere utilizzato o meno all&#8217;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) &#013; foreach ($iter as $val) &#013; \/\/ ...&#013; &#013; Fino a PHP...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Agency Italia Web Designer realizzazione siti web Italy\" \/>\n<meta property=\"article:published_time\" content=\"2016-12-26T13:22:26+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/\",\"url\":\"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/\",\"name\":\"Pseudo-tipi iterabili in PHP 7.1 - Web Agency Italia Web Designer realizzazione siti web Italy\",\"isPartOf\":{\"@id\":\"https:\/\/www.multimediaweb.eu\/web-agency\/#website\"},\"datePublished\":\"2016-12-26T13:22:26+00:00\",\"dateModified\":\"2016-12-26T13:22:26+00:00\",\"author\":{\"@id\":\"https:\/\/www.multimediaweb.eu\/web-agency\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.multimediaweb.eu\/web-agency\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pseudo-tipi iterabili in PHP 7.1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.multimediaweb.eu\/web-agency\/#website\",\"url\":\"https:\/\/www.multimediaweb.eu\/web-agency\/\",\"name\":\"Web Agency Italia Web Designer realizzazione siti web Italy\",\"description\":\"Web design creazione siti web Italia\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.multimediaweb.eu\/web-agency\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.multimediaweb.eu\/web-agency\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.multimediaweb.eu\/web-agency\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"url\":\"https:\/\/www.multimediaweb.eu\/web-agency\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pseudo-tipi iterabili in PHP 7.1 - Web Agency Italia Web Designer realizzazione siti web Italy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/","og_locale":"it_IT","og_type":"article","og_title":"Pseudo-tipi iterabili in PHP 7.1 - Web Agency Italia Web Designer realizzazione siti web Italy","og_description":"Traversable viene impiegata per verificare se uno specifico elemento pu\u00f2 essere utilizzato o meno all&#8217;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) &#13; foreach ($iter as $val) &#13; \/\/ ...&#13; &#13; Fino a PHP...","og_url":"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/","og_site_name":"Web Agency Italia Web Designer realizzazione siti web Italy","article_published_time":"2016-12-26T13:22:26+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"admin","Tempo di lettura stimato":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/","url":"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/","name":"Pseudo-tipi iterabili in PHP 7.1 - Web Agency Italia Web Designer realizzazione siti web Italy","isPartOf":{"@id":"https:\/\/www.multimediaweb.eu\/web-agency\/#website"},"datePublished":"2016-12-26T13:22:26+00:00","dateModified":"2016-12-26T13:22:26+00:00","author":{"@id":"https:\/\/www.multimediaweb.eu\/web-agency\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42"},"breadcrumb":{"@id":"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.multimediaweb.eu\/web-agency\/pseudo-tipi-iterabili-in-php-7-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.multimediaweb.eu\/web-agency\/"},{"@type":"ListItem","position":2,"name":"Pseudo-tipi iterabili in PHP 7.1"}]},{"@type":"WebSite","@id":"https:\/\/www.multimediaweb.eu\/web-agency\/#website","url":"https:\/\/www.multimediaweb.eu\/web-agency\/","name":"Web Agency Italia Web Designer realizzazione siti web Italy","description":"Web design creazione siti web Italia","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.multimediaweb.eu\/web-agency\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.multimediaweb.eu\/web-agency\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42","name":"admin","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.multimediaweb.eu\/web-agency\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g","caption":"admin"},"url":"https:\/\/www.multimediaweb.eu\/web-agency\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.multimediaweb.eu\/web-agency\/wp-json\/wp\/v2\/posts\/22589"}],"collection":[{"href":"https:\/\/www.multimediaweb.eu\/web-agency\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.multimediaweb.eu\/web-agency\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.multimediaweb.eu\/web-agency\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.multimediaweb.eu\/web-agency\/wp-json\/wp\/v2\/comments?post=22589"}],"version-history":[{"count":1,"href":"https:\/\/www.multimediaweb.eu\/web-agency\/wp-json\/wp\/v2\/posts\/22589\/revisions"}],"predecessor-version":[{"id":22590,"href":"https:\/\/www.multimediaweb.eu\/web-agency\/wp-json\/wp\/v2\/posts\/22589\/revisions\/22590"}],"wp:attachment":[{"href":"https:\/\/www.multimediaweb.eu\/web-agency\/wp-json\/wp\/v2\/media?parent=22589"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.multimediaweb.eu\/web-agency\/wp-json\/wp\/v2\/categories?post=22589"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.multimediaweb.eu\/web-agency\/wp-json\/wp\/v2\/tags?post=22589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}