Portál AbcLinuxu, 13. listopadu 2025 17:55
$name = '$pool';
$undefined = '';
foreach(...){
$undefined .= '...';
}
$undefined .= $$name (každý $ přidá další lookup symbolu).
Ale budiž varován že to je obrat kterým si můžes založit nehezkou díru. Pokud tam mermomocí potřebuješ indirekci, tak to udělej jako lookup v asociativním poli.
progv v Common Lispu, ale ještě jsem ho nepoužil a to jsem si v tom jazyce hrál poměrně dost. Prej to má být dobrý při psaní interpretů embedded jazyků.
$_ = null;
function magic($name) {
global $_;
$_ = $name;
}
$foo = 'baz';
$bar = 'quux';
for($i=0;$i<10;$i++) {
if($i%2==0) magic('foo');
else magic('bar');
$$_ .= $i;
}
echo "$foo,$bar";
Je škoda, že nefunguje něco jako:
function magic($name) {
global $_,$$name;
$_ = &$$name;
}
Omezuje to docela možnosti metaprogramování.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.