<?php
class Test {
public $testdata = [];
public function __construct(&$inputdata) {
$this->testdata =& $inputdata;
}
public function &getIterator() {
foreach ($this->testdata as $ikey => &$ivalue) {
yield $ikey => $ivalue;
}
}
}
$data = array("one" => "Curly", "two" => "Larry", "three" => "Moe");
$t = new Test($data);
foreach ($t->getIterator() as $tkey => &$tvalue) {
// $tvalue -> $ivalue -> $t->testdata -> $inputdata -> $data
// break any reference in that chain and the line below will not work
$tvalue = strtoupper($tvalue);
}
foreach ($data as $dkey => $dvalue) {
printf("%s: %s\n", $dkey, $dvalue);
}
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
one: CURLY
two: LARRY
three: MOE