পরিচয়
ইটারেটার ইন্টারফেস বিমূর্ত ট্রাভার্সেবল প্রসারিত করে ইন্টারফেস. পিএইচপি অনেক বিল্ট-ইন ইটারেটর প্রদান করে (যাকে এসপিএল ইটারেটর বলা হয় ) অনেক রুটিন কার্যকারিতার জন্য। উদাহরণ হল ArrayIterator , DirectoryIterator ইত্যাদি। একটি ব্যবহারকারী শ্রেণী যেটি ইটারেটর ইন্টারফেস প্রয়োগ করে তার সংজ্ঞায়িত হিসাবে বিমূর্ত পদ্ধতি প্রয়োগ করা উচিত।
সিনট্যাক্স
Iterator extends Traversable { /* Methods */ 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::key — বর্তমান উপাদানের কী ফেরত দিন
পুনরাবৃত্তিকারী::পরবর্তী — পরবর্তী উপাদানে এগিয়ে যান
ইটারেটার::রিওয়াইন্ড — ইটারেটরকে প্রথম এলিমেন্টে রিওয়াইন্ড করুন
Iterator::valid — বর্তমান অবস্থান বৈধ কিনা তা পরীক্ষা করে
IteratorAggregate বাস্তবায়ন করার সময় অথবা ইটারেটর ইন্টারফেস যা ট্রাভার্সেবলকে প্রসারিত করে, সেগুলিকে অবশ্যই তার নামের আগে ইমপ্লিমেন্টে তালিকাভুক্ত করতে হবে ধারা।
ইটারেটর উদাহরণ
নিম্নলিখিত পিএইচপি স্ক্রিপ্টে, ইন্টারফেস প্রয়োগকারী একটি ক্লাসে ব্যক্তিগত ভেরিয়েবল হিসাবে একটি অ্যারে রয়েছে। 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() ক্লিঙ করেও পুনরাবৃত্তি করা যেতে পারে কিছুক্ষণ লুপে পদ্ধতি। রিওয়াইন্ড করা নিশ্চিত করুন৷ লুপ শুরু করার আগে পুনরাবৃত্তিকারী
উদাহরণ
$it->rewind(); do { echo $it->key() . "=>" .$it->current() . "\n"; $it->next(); } while ($it->valid());
আউটপুট
উভয় ক্ষেত্রেই, অ্যারের সম্পত্তির ট্রাভার্সাল নিম্নলিখিত ফলাফল দেখায়
0=>10 1=>20 2=>30 3=>40