<?php def_md('test_md', 5, function ($a) { echo '.'; return $a . "\n"; }); echo test_md(1, str_repeat("a", 300)); echo test_md(1, str_repeat("a", 500)); ?> --- .1 .1
<?php $nm = str_repeat("a", 500); def_md($nm, 5, function ($a) { echo '.'; return "{$a}\n"; }); echo call_user_func_array($nm, array(1)); echo call_user_func_array($nm, array(1)); echo call_user_func_array($nm, array(2)); ?> --- .1 1 .2
<?php def_md('foo\\bar', 5, function () { echo '.'; return "1\n"; }); def_md('foo::bar', 5, function () { echo '.'; return "2\n"; }); echo foo\bar(); echo foo\bar(); echo foo::bar(); echo foo::bar(); ?> --- .1 1 .2 2
<?php // Четвёртым аргументом для def_md можно передат функцию, которая будет // создавать ключ для кэширования результатов def_md('sum', 5, function ($a, $b) { echo "."; return $a + $b; }, function ($fname, $args) { return "{$fname}:" . implode('-', $args); }); echo sum(1, 2) . "\n"; echo sum(1, 2) . "\n"; echo bu\def\memcached()->get('sum:1-2') . "\n"; flush_md(); echo bu\def\memcached()->get('sum:1-2') . "\n"; echo sum(1, 2) . "\n"; echo sum(1, 2) . "\n"; ?> --- .3 3 3 .3 3
<?php def_md('sum', 5, function ($a, $b) { echo '.'; return $a + $b; }); echo sum(1, 2) . "\n"; echo sum(1, 2) . "\n"; flush_md(); echo sum(1, 2) . "\n"; echo sum(1, 2) . "\n"; ?> --- .3 3 .3 3