পরিচয়
পিএইচপি 5 থেকে, একটি বস্তুর সমস্ত দৃশ্যমান আইটেমের তালিকার মাধ্যমে পুনরাবৃত্তি করা সম্ভব। foreach ব্যবহার করে পুনরাবৃত্তি করা যেতে পারে লুপ সেইসাথে ইটারেটর ইন্টারফেস. এছাড়াও IteratorAggregate আছে PHP-তে ইন্টারফেস, যা এই উদ্দেশ্যে ব্যবহার করা যেতে পারে
ফোরচ লুপ ব্যবহার করা
উদাহরণ
<?php class myclass{ private $var; protected $var1; public $x, $y, $z; public function __construct(){ $this->var="private variable"; $this->var1=TRUE; $this->x=100; $this->y=200; $this->z=300; } public function iterate(){ foreach ($this as $key => $value) { print "$key => $value\n"; } } } $obj = new myclass(); foreach($obj as $key => $value) { print "$key => $value\n"; } echo "\n"; $obj->iterate(); ?>
আউটপুট
আউটপুট নিম্নরূপ -
x => 100 y => 200 z => 300 var => private variable var1 => 1 x => 100 y => 200 z => 300
ইটারেটর ইন্টারফেস ব্যবহার করা
এই ইন্টারফেস নিম্নলিখিত বিমূর্ত পদ্ধতিগুলিকে সংজ্ঞায়িত করে যা নিম্নলিখিত উদাহরণে প্রয়োগ করা হবে
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 — বর্তমান অবস্থান বৈধ কিনা তা পরীক্ষা করে
নিম্নলিখিত উদাহরণটি ইটারেটর ইন্টারফেস
প্রয়োগ করে বস্তুর পুনরাবৃত্তি দেখায়উদাহরণ
<?php class myclass implements Iterator{ private $arr = array('a','b','c'); public function rewind(){ echo "rewinding\n"; reset($this->arr); } public function current(){ $var = current($this->arr); echo "current: $var\n"; return $var; } public function key() { $var = key($this->arr); echo "key: $var\n"; return $var; } public function next() { $var = next($this->arr); echo "next: $var\n"; return $var; } public function valid(){ $key = key($this->arr); $var = ($key !== NULL && $key !== FALSE); echo "valid: $var\n"; return $var; } } $obj = new myclass(); foreach ($obj as $k => $v) { print "$k: $v\n"; } ?>
আউটপুট
উপরের কোড নিম্নলিখিত ফলাফল তৈরি করে -
rewinding valid: 1 current: a key: 0 0: a next: b valid: 1 current: b key: 1 1: b next: c valid: 1 current: c key: 2 2: c next: valid: