- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
<?php
function createOperator($a = [])
{
$IOperator = [
'index' => 1,
'iteration' => "",
'f' => 'print_r($a);if(++$a["index"] < $a["count"])
return eval($a["iteration"]);
else
return $a["result"];',
'run' => 'return eval',
];
if(!empty($a))
{
$IOperator['run'] = '$a = $'.$a['title'] . '; ' . $IOperator['run'] . '($a["iteration"]);';
$IOperator['iteration'] = '$a = array_merge($a, ' . $a['operation'] . ');' . "\n" . $IOperator['f'];
$IOperator = array_merge($a, $IOperator);
}
return $IOperator;
}
$fib = createOperator([
'first' => 1,
'result' => 1,
'count' => 5,
'title' => 'fib',
'operation' => '["first" => $a["result"], "result" => $a["first"]+$a["result"]]'
]);
echo eval($fib['run']);
$fac = createOperator([
'result' => 1,
'count' => 5,
'title' => 'fac',
'operation' => '["result" => $a["result"]*$a["index"]]',
]);
echo eval($fac['run']);
Меня потянуло сделать какую-то фигню. Встречайте, рефлексивное программирование.