Iterables

🔹 Iterable چیست؟

  • از PHP 7.1 به بعد یک نوع داده جدید به اسم iterable معرفی شد.

  • iterable یعنی هر چیزی که میشه روی اون حلقه (loop) زد.

  • شامل:

    • Array

    • Objectهایی که از Traversable پیاده‌سازی شدن (مثل Iterator, Generator)

🔹 تابعی با نوع داده iterable

<?php function printIterable(iterable $items) { foreach ($items as $item) { echo $item . "<br>"; } } $myArray = ["Apple", "Banana", "Cherry"]; printIterable($myArray); ?>

📌 خروجی:

Apple Banana Cherry

🔹 استفاده از iterable با کلاس Iterator

<?php class MyIterator implements Iterator { private $items = []; private $position = 0; public function __construct($items) { $this->items = $items; } public function current() { return $this->items[$this->position]; } public function key() { return $this->position; } public function next() { ++$this->position; } public function rewind() { $this->position = 0; } public function valid() { return isset($this->items[$this->position]); } } function printIterable(iterable $items) { foreach ($items as $item) { echo $item . "<br>"; } } $iterator = new MyIterator(["PHP", "JavaScript", "Python"]); printIterable($iterator); ?>

📌 خروجی:

PHP JavaScript Python

🔹 نکته مهم

  • iterable فقط به عنوان type hint استفاده میشه.

  • یعنی در تعریف پارامترها یا مقدار بازگشتی (return type).

  • نمی‌تونیم مستقیم مقدار جدید iterable بسازیم، بلکه از array یا object قابل پیمایش استفاده می‌کنیم.

✅ خلاصه

  • iterable نوع داده‌ای برای چیزهایی هست که میشه روی اون‌ها loop زد.

  • شامل array و objectهای پیاده‌سازی شده از Traversable.

  • کاربرد اصلیش در type hinting برای توابع و متدهاست.