PHP önceki kapsamı ihracat değişken

0 Cevap php

Eğer kapsamları karışmaz nasıl atlamak önce Şimdi: ben bu fark. Ancak, bu kapsam karıştırma ya gerçekleşmelidir veya büyük kod çoğaltılması, meydana bir şey olmalıdır etrafında bir durumdur. Ve ben kapsam karıştırmayı tercih ederim.

O dedi, ben bu kodu istiyorum:

function a() {
    $a = "a";
    $b = "b";
    $c = "c";
}
function b() {
    a();
    echo $a . $b . $c;
}
b(); // Output: abc
echo $a; // Should raise a notice that $a is undefined

yorumladı olarak çalışmak mümkün. Ben-ben dilleri olsa, Ruby bunu başardı çoğu mümkün değil biliyorum; ve merak PHP ile bunu yapabilir.

Değişken isimleri gerçek durumda önceden bilinmemektedir.

Yine, kod çoğaltılması ya da çevresinde bu-kesinlikle hiçbir yolu yoktur.

a a('b') falan gibi bir şey olsaydı da, tamam olurdu.


Gerçekte, kod şudur:

static function renderError($what, $vararray) {
    foreach($vararray as $key => $val) { /* this foreach is the code we want to decouple */
        $key = 'e_'.$key;
        $$key = htmlspecialchars($val);
    }
    ob_clean();
    exit(eval('?>'.file_get_contents(ROOT."/templates/$what.php")));
}

Gibi bir çağrı ile E_Render::renderError('NotFound', array( 'requested_url' => '/notfound', 'misspelling' => '/reallynotfound' ));

Ardından, şablonlar / NotFound.php, sen gibi bir şey olurdu:

<html>
<body>
<?php echo $e_requested_url; ?> could not be found. Did you mean <?php echo $e_misspelling: ?>?
</body>
</html>

Biz gerçekten oldukça bizim şablon yazarlar bundan daha fazla bir şey yapmak zorunda değilsiniz ki ... iyi bir şey mevcut olsaydı $e['requested_url'] yapılabilir rağmen.

0 Cevap