php/e15inc.php
<?php
require_once('env.php');
outBegin('includes');
out('nonexisting');
include 'e15incNotExist';
out('existing without <?php ... ');
include 'e15incNoPhp';
out(' ... nach existing without <?php');
out('existing with <?php');
include 'e15incWithPhp';
foreach ( $incs = ['e15incWithPhp', 'e15incZwei'] as $k => $ii) {
out("embed $k => $ii in function");
$fn[$k] = function($var) use ($ii) {
$var .= " * included $ii";
include $ii;
mv($ii, "{$ii}Rename", "inFun");
};
}
foreach ( $incs = ['e15incWithPhp', 'e15incZwei'] as $k => $ii)
mv($ii, $ii . 'Rename', 'out1');
$ii = 'iiDrei';
out("ii=$ii");
$fn[0]('0eins');
$fn[0]('0zwei');
out("the second function fn[1] does the include only here not above as fn[0]!");
$fn[1]('1drei');
mv($incs[1] . 'Rename', $incs[1], 'out2');
$fn[1]('1vier');
$fn[1]('1fuenf');
$fn[0]('0sechs');
$fn[1]('1sieben');
foreach ( $incs as $k => $ii)
mv("{$ii}Rename", $ii, "out3") ;
outH('gen php');
foreach(['null', 'eins', 'zwei', 'drei', 'vier'] as $k => $v) {
gen($k, $v);
for ($j=0; $j <= $k; $j++)
genX($j, "call $j after $k => $v");
}
fromInc('e15incFF.php');
fromInc('e15Missing');
fromInc('e15incSyntax.php');
outEnd(__file__);
function gen($k, $t) {
for ($i=0 ; $i<5; $i++) {
file_put_contents("e15incF$i.php", "<?php\nout(\"ea5incF$i.php * gen=$t * var=\$var\");");
}
}
function genX($j, $var) {
out("genX j=$j var=$var");
include "e15incF$j.php" ;
}
function fromInc($nm) {
$r = $fAdd = [];
$f = function() use (&$fAdd) {
for($x=0; $x < func_num_args(); $x++)
$fAdd[] = func_get_arg($x);
};
error_clear_last();
ob_start();
try {
$res = @(include $nm);
$err = error_get_last();
} catch (Throwable $thr) {
}
$out = ob_get_contents();
ob_end_clean();
if (isset($thr))
return out("error fromInc($nm) caught", get_class($thr), $thr->getMessage(), ', out=', $out, ", fAdd=", $fAdd, ", r=", $r);
if (! $res or $err !== null)
return out("error fromInc($nm)", $err, ', out=', $out, ", fAdd=", $fAdd, ", r=", $r);
out("fromInc res", $res, ", err", $err, ", out=$out, fAdd=", $fAdd, ", r=", $r);
$o = array_merge(explode("\n", $out), $fAdd, $r);
$o = array_filter($o, function($s) {return $s !== '' and $s[0] !== '#'; });
out('...returns', $o);
return $o;
}
function mv($fr, $to, $m) {
if (! file_exists($fr))
out("mv $m: $fr does not exist");
elseif (rename($fr, $to))
out("mv $m renamed $fr to $to");
else
out("mv $m could not rename $fr");
}