Advertisement
MBrendecke

Lambda

Mar 29th, 2018
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.47 KB | None | 0 0
  1. <?php
  2.  
  3. class Container {
  4.  
  5.     protected $values;
  6.  
  7.     public function __construct() {
  8.         $this->values = array();
  9.     }
  10.  
  11.     public function __get($key) {
  12.         return $this->values[$key] ?? NULL;
  13.     }
  14.  
  15.     public function __set($key, $value) {
  16.         $this->values[$key] = $value;
  17.     }
  18.  
  19.     public function find(\Closure $match) {
  20.         foreach ($this->values as $value) {
  21.             if ($match($value)) {
  22.                 return $match;
  23.             }
  24.         }
  25.     }
  26.  
  27.     public function findAll(\Closure $match) {
  28.         foreach ($this->values as $value) {
  29.             if ($match($value)) {
  30.                 yield $value;
  31.             }
  32.         }
  33.     }
  34.  
  35. }
  36.  
  37. $container = new Container();
  38.  
  39. foreach (range(0, 101) as $value) {
  40.     $container->$value = $value;
  41. }
  42.  
  43. printValues($container->findAll(function ($num) { return $num % 2 == 0; }));
  44.  
  45. echo '<br />';
  46.  
  47. printValues($container->findAll(function ($num) { return $num % 2 == 1; }));
  48.  
  49. function printValues($values) {
  50.     foreach ($values as $value) {
  51.         echo $value . ' ';
  52.     }
  53. }
  54.  
  55. ?>
  56. ===================================================================================================
  57.  
  58. 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
  59. 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement