Hari 24: SPL & Iterator
55 min
Last updated 09 Apr 2026
SplStack & SplQueue
// Stack (LIFO)
$stack = new SplStack();
$stack->push("A");
$stack->push("B");
$stack->push("C");
echo $stack->pop(); // C (terakhir masuk, pertama keluar)
echo $stack->top(); // B
// Queue (FIFO)
$queue = new SplQueue();
$queue->enqueue("Task 1");
$queue->enqueue("Task 2");
$queue->enqueue("Task 3");
echo $queue->dequeue(); // Task 1 (pertama masuk, pertama keluar)
SplMinHeap & SplMaxHeap
$heap = new SplMinHeap();
foreach ([5, 2, 8, 1, 9, 3] as $n) $heap->insert($n);
while (!$heap->isEmpty()) {
echo $heap->extract() . " "; // 1 2 3 5 8 9
}
Generator — Lazy Iteration
function fibonacci(): Generator {
[$a, $b] = [0, 1];
while (true) {
yield $a;
[$a, $b] = [$b, $a + $b];
}
}
$fib = fibonacci();
for ($i = 0; $i < 8; $i++) {
echo $fib->current() . " ";
$fib->next();
}
// 0 1 1 2 3 5 8 13
💡
Notice: "yield" membuat fungsi menjadi Generator yang lazy — nilai dihitung satu per satu saat dibutuhkan.
Assignment
Gunakan Generator untuk menghasilkan bilangan prima sampai batas n. Buat fungsi bilangan_prima(int $batas): Generator. Tampilkan semua prima sampai 30.
Expected output:
2 3 5 7 11 13 17 19 23 29
PHP
index.php
Solution
Output