কম্পিউটার টিউটোরিয়াল

PHP Iterator ইন্টারফেস


ভূমিকা

Iterator ইন্টারফেস অ্যাবস্ট্রাক্ট Traversable ইন্টারফেস এক্সটেন্ড করে। PHP অনেক বিল্ট-ইন ইটারেটর প্রদান করে (যাকে SPL iterators বলা হয়) অনেক রুটিন ফাংশনালিটির জন্য। উদাহরণ: ArrayIterator, DirectoryIterator ইত্যাদি। Iterator ইন্টারফেস ইমপ্লিমেন্ট করা একটি ইউজার ক্লাসে এর মধ্যে ডিফাইন করা অ্যাবস্ট্রাক্ট মেথডগুলো ইমপ্লিমেন্ট করতে হয়।

সিনট্যাক্স

Iterator extends Traversable { abstract public current ( void ) : mixed abstract public key ( void ) : scalar abstract public next ( void ) : void abstract public rewind ( void ) : void abstract public valid ( void ) : bool }

মেথড

Iterator::current — বর্তমান এলিমেন্ট রিটার্ন করুন

Iterator::key — বর্তমান এলিমেন্টের কি রিটার্ন করুন

Iterator::next — পরের এলিমেন্টে ফরওয়ার্ড যান

Iterator::rewind — Iteratorকে প্রথম এলিমেন্টে রিউইন্ড করুন

Iterator::valid — করেন্ট পজিশন বৈধ কিনা চেক করুন

IteratorAggregate বা Iterator ইন্টারফেস ইমপ্লিমেন্ট করার সময় যেগুলো Traversable এক্সটেন্ড করে, সেগুলো implements ক্লজে তার নামের আগে লিস্ট করতে হবে।

Iterator উদাহরণ

নিচের PHP স্ক্রিপ্টে, Iterator ইন্টারফেস ইমপ্লিমেন্ট করা একটি ক্লাসে একটি অ্যারে প্রাইভেট ভেরিয়েবল হিসেবে রয়েছে। Iterator-এর অ্যাবস্ট্রাক্ট মেথডগুলো ইমপ্লিমেন্ট করে আমরা foreach লুপ দিয়ে অ্যারেটি ট্রভার্স করতে পারি, next() মেথডও ব্যবহার করতে পারি।

উদাহরণ

<?php class myIterator implements Iterator { private $index = 0; private $arr = array(10,20,30,40); public function __construct() { $this->index = 0; } public function rewind() { $this->index = 0; } public function current() { return $this->arr[$this->index]; } public function key() { return $this->index; } public function next() { ++$this->index; } public function valid() { return isset($this->arr[$this->index]); } } ?>

foreach লুপ ব্যবহার করে আমরা MyIterator অবজেক্টের অ্যারে প্রপার্টি ওভার ইটারেট করতে পারি—

$it = new myIterator(); foreach($it as $key => $value) { echo "$key=>" . $value . "\n"; }

ইটারেশন next() মেথড কল করে একটি while লুপে করলেও হয়। লুপ শুরু করার আগে rewind করতে ভুলবেন না—

উদাহরণ

$it->rewind(); do { echo $it->key() . "=>" . $it->current() . "\n"; $it->next(); } while ($it->valid());

আউটপুট

দুই কেসেই, অ্যারে প্রপার্টির ট্রভার্সাল নিচের ফলাফল দেখাবে—

0=>10 1=>20 2=>30 3=>40

  1. PHP জেনারেটর vs ইটারেটর অবজেক্ট

  2. PHP-তে ইন্টারফেস (Interface) ব্যাখ্যা

  3. PHP-তে পলিমরফিজম (Polymorphism) ব্যাখ্যা

  4. PHP-এ interface_exists() ফাংশন