<?php // С помощью deflet можно выполнить участок кода, так что // определённые/переопределённые функции не будут видны за его пределами def_printfer("say", "one\n"); say(); deflet(function () { def_printfer("say", "two\n"); say(); }); say(); ?> --- one two one
<?php def_printfer('puts', "%s\n"); puts('base>'); _catch("first", function () { puts('1>'); _catch("second", function () { puts('2>'); _catch("third", function () { puts('3>'); _throw("second"); puts('<3'); }); puts('<2'); }); puts('<1'); }); puts('<base'); ?> --- base> 1> 2> 3> <1 <base
<?php // def_printfer принимает название функции которую надо создать и шаблон. // Привызове она будет использовать шаблон как первый аргумент для printf. def_printfer('h1', '<h1>%s</h1>'); h1('hello!'); ?> --- <h1>hello!</h1>
<?php def_printfer('p', "%s\n"); p(1); catcher('warning', function () { echo "warning!\n"; }); noise('warning'); p(2); catcher('warning', function () { echo "error!\n"; }); noise('warning'); p(3); ?> --- 1 warning! 2 error! 3
puts($result); puts(''); }); def('print_all_errors', function () { puts("\n"); foreach (Memo::$errors as $v) { print_error($v['file'], $v['eval_out'], $v['result']); } }); def('test_files', function ($dir) { return glob($dir . '*.php'); }); module('Color', function () { def_printfer('reset', chr(27) . "[0m"); def_printfer('green', chr(27) . "[0;32m"); def_printfer('red', chr(27) . "[0;31m"); }); $correct = 0; $total = 0; $fail = 0; foreach (test_dirs() as $dir) { $prefix = ""; $suffix = ""; if (file_exists($dir . 'prerequisite')) { if (trim(eval_output(file_get_contents($dir . 'prerequisite'))) != 'ok') { echo str_repeat('s', count(test_files($dir))); continue; } } if (file_exists($dir . 'prefix')) { $prefix = file_get_contents($dir . 'prefix');
say_one(); // Me: one def('say_two', function () { puts("Me: two"); }); say_two(); // Me: two def_alias('say_one', 'say_two'); say_two(); // Me: one //////////////////////////////////////// def_printfer('test_let', "calling outside let \n"); test_let(); // calling outside let deflet(function () { def_printfer('test_let', "calling inside let \n"); test_let(); // calling inside let }); test_let(); // calling outside let //////////////////////////////////////// # using namespace def('foo\\bar\\hello', function () { echo "Hello, World!\n"; }); foo\bar\hello(); // Hello, World! //////////////////////////////////////// # Testing def_return def_return('user_name', 'waserd');