<?php
class Container {
protected $values;
public function __construct() {
$this->values = array();
}
public function __get($key) {
return $this->values[$key] ?? NULL;
}
public function __set($key, $value) {
$this->values[$key] = $value;
}
public function find(\Closure $match) {
foreach ($this->values as $value) {
if ($match($value)) {
return $match;
}
}
}
public function findAll(\Closure $match) {
foreach ($this->values as $value) {
if ($match($value)) {
yield $value;
}
}
}
}
$container = new Container();
foreach (range(0, 101) as $value) {
$container->$value = $value;
}
printValues($container->findAll(function ($num) { return $num % 2 == 0; }));
echo '<br />';
printValues($container->findAll(function ($num) { return $num % 2 == 1; }));
function printValues($values) {
foreach ($values as $value) {
echo $value . ' ';
}
}
?>
===================================================================================================
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101
Comments