- 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']);
Меня потянуло сделать какую-то фигню. Встречайте, рефлексивное программирование.
serpinski 02.12.2012 02:35 # −3
scriptin 02.12.2012 12:09 # +6
>eval
Возможно, формально это и попадает под определение рефлексии, но реально это все равно, что пытаться развивать в себе суперспособности при помощи наркотиков: под кайфом тебе кажется, что ты сверхчеловек, а на самом деле ты обычный наркоман.
Fai 02.12.2012 13:05 # +1
mkusher 02.12.2012 13:08 # +5
myaut 02.12.2012 23:14 # +4
Мистер Хэнки 03.12.2012 19:49 # +1
scriptin 03.12.2012 20:00 # −1
Мистер Хэнки 03.12.2012 20:16 # −1
Lure Of Chaos 04.12.2012 01:44 # +2
bormand 04.12.2012 05:35 # +1
eth0 04.12.2012 20:09 # +1
anonimb84a2f6fd141 04.12.2012 21:09 # −1