- Katılım
- 2 Mar 2015
- Konular
- 59,189
- Mesajlar
- 88,442
- Çözüm
- 109
- Online süresi
- 4mo 16d
- Reaksiyon Skoru
- 14,280
- Altın Konu
- 2,398
- TM Yaşı
- 11 Yıl 3 Ay 7 Gün
- Başarım Puanı
- 1,051
- MmoLira
- 695,207
- DevLira
- 234
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Bir foreach döngüsü, bir PHP sınıfının nesnesinin herkese açık tüm üyeleri arasında yineleme yapmak için kullanılabilir. Bu özellik PHP 5 ve sonraki sürümlerde mevcuttur. Elbette bir örnek yönteminin içindeki özel özelliklerin listesine erişebilirsiniz. PHP ayrıca bu amaçla kullanılabilen Iterator arayüzünü de tanımlar.
foreach Döngüsünü Kullanma
Aşağıdaki örnekte sınıfın public özellikleri foreach döngüsü kullanılarak listelenmiştir.Örnek
PHP:
<?php
class myclass {
private $var;
protected $var1;
public $x, $y, $z;
public function __construct() {
$this->var="Hello World";
$this->var1=array(1,2,3);
$this->x=100;
$this->y=200;
$this->z=300;
}
}
$obj = new myclass();
foreach($obj as $key => $value) {
print "$key => $value\n";
}
?>
Aşağıdaki çıktıyı üretecektir:
x => 100
y => 200
z => 300
Sadece public üyelerin sınıfın dışından erişilebilir olduğunu unutmayın. Sınıf bir yöntem içeriyorsa, tüm üyeler (public, private veya protected) içinden bir foreach döngüsüyle dolaşılabilir.
Yukarıdaki myclass'a bir yineleme metodu ekleyelim.
public function iterate() {
foreach ($this as $k=>$v) {
if (is_array($v)) {
var_dump($v);
echo PHP_EOL;
} else {
echo "$k : $v". PHP_EOL;
}
}
}
Tüm üyelerin listesini almak için bu örnek metodunu çağırın.
Aşağıdaki çıktıyı üretecektir:
var : Hello World
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
x : 100
y : 200
z : 300
Iterator Arayüzünü Kullanma
PHP, harici yineleyiciler veya dahili olarak yinelenebilen nesneler için Iterator arayüzü sağlar. Kullanıcı tanımlı sınıfta uygulanması gereken aşağıdaki soyut yöntemleri tanımlar.interface Iterator extends Traversable {
/* Methods */
public current(): mixed
public key(): mixed
public next(): void
public rewind(): void
public valid(): bool
}
- rewind() metodu Iterator'ı ilk elemana geri sarar. Bu, foreach döngüsü başlatılırken çağrılan ilk metottur. foreach döngülerinden sonra yürütülmez.
- current() metodu geçerli öğeyi döndürür.
- key() metodu foreach döngüsünün her yinelemesinde geçerli öğenin anahtarını döndürür.
- next() metodu foreach döngüsünün her yinelemesinden sonra çağrılır ve bir sonraki elemana doğru ilerler.
- valid() metodu mevcut pozisyonun geçerli olup olmadığını kontrol eder.
Örnek
Aşağıdaki örnek, Iterator arayüzünü uygulayarak nesne yinelemesini gösterir.
PHP:
<?php
class myclass implements Iterator {
private $arr = array('a','b','c');
public function rewind():void {
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() : void {
$var = next($this->arr);
echo "next: $var\n";
# return $var;
}
public function valid() : bool {
$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";
}
?>
Aşağıdaki çıktıyı üretecektir:
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:

