<?php
class Record {
private $data = [];
private $currentIndex = 0;
public function addRecord($value) {
$this->data[] = $value;
}
public function getRecord() {
if ($this->currentIndex < count($this->data)) {
$record = $this->data[$this->currentIndex];
$this->currentIndex++;
return $record;
} else {
return null;
}
}
}
// Vytvoření instance třídy
$recordKeeper = new Record();
// Přidání záznamů
$recordKeeper->addRecord("John");
$recordKeeper->addRecord(30);
$recordKeeper->addRecord("New York");
// Získání a postupné procházení všech záznamů pomocí cyklu foreach a metody getRecord()
echo "All records:<br>";
while ($record = $recordKeeper->getRecord()) {
echo $record . "<br>";
}
<?php
/* loop with foreach , works < PHP 8*/
class Record implements IteratorAggregate {
private $data = [];
public function addRecord($value) {
$this->data[] = $value;
}
public function getIterator() {
return new ArrayIterator($this->data);
}
}
// Vytvoření instance třídy
$recordKeeper = new Record();
// Přidání záznamů
$recordKeeper->addRecord("John");
$recordKeeper->addRecord(30);
$recordKeeper->addRecord("New York");
// Použití cyklu foreach na třídě Record
echo "All records:<br>";
foreach ($recordKeeper as $record) {
echo $record . "<br>";
}
<?php
/* PHP 8+ returntype... */
class Record implements IteratorAggregate {
private $data = [];
public function addRecord($value) {
$this->data[] = $value;
}
#[\ReturnTypeWillChange]
public function getIterator() {
return new ArrayIterator($this->data);
}
}
// Vytvoření instance třídy
$recordKeeper = new Record();
// Přidání záznamů
$recordKeeper->addRecord("John");
$recordKeeper->addRecord(30);
$recordKeeper->addRecord("New York");
// Použití cyklu foreach na třídě Record
echo "All records:<br>";
foreach ($recordKeeper as $record) {
echo $record . "<br>";
}