Nella documentazione di PHP si dice che:I generatori PHP possono essere clonati?
Questa flessibilità non hanno un costo, però: i generatori sono forward-only iteratori, e non possono essere riavvolti una volta che l'iterazione è iniziata. Ciò significa anche che lo stesso generatore non può essere iterato più volte: il generatore dovrà essere ricostruito chiamando di nuovo la funzione generatore, o clonato tramite la parola chiave clone. Documentation
Tuttavia ho provato a scrivere un codice che clona l'oggetto generatore che ho ricevuto da un metodo e ho ottenuto un errore che specifica che un oggetto generatore sopraelevazione essere clonato:
class Course {
private $students = array("avi" , "haim" , "maor" , "liran" , "yossi");
function generateStudents() {
foreach ($this->students as $student) {
yield $student;
}
}
}
$ob = new Course();
$generator = $ob->generateStudents();
// Fatal error: Trying to clone an uncloneable object of class Generator
$generator2 = clone $generator;
?>
Si prega di rendere la vostra domanda più chiara. –