2011-12-12 15 views
9

Projektuję własny wzorzec MVC, aby ułatwić proces tworzenia stron głównych. Mój system szablonów potrzebuje mojej klasy kontrolera, aby wyprowadzić moje widoki. Oznacza to, że muszę wypisać plik za pomocą funkcji php. Od pewnego czasu szukam i nie mogę znaleźć rozwiązania.Jak uruchomić kod php z file_get_contents lub pliku w funkcji

Jak mogę, za pomocą funkcji PHP, uruchomić ciąg reprezentujący pewien kod źródłowy ("<?", "<? Php", "?>" Itd.) Jako php? Eval nie zabrałby mojej <? znaki (i czytałem, że ta funkcja to bzdury z jakiegoś powodu).

Odpowiedz

2

Po prostu dołączanie pliku() powinno być w porządku. Nie wkopałem tego głęboko w kod źródłowy, ale jestem pewien, że w ten sposób Zend Framework implementuje szablony.

0

Cóż, eval nie jest bzdura per se, tylko łatwo stworzyć lukę bezpieczeństwa z, że jeśli "nie zwracaj uwagi na to, co pozwalasz na to eval (to, a może na to, że może to źle wpłynąć na czytelność kodu).

Jeśli chodzi o znaki , to dlatego, że eval oczekuje kodu php, więc jeśli nie chcesz mieszać php ze zwykłym wyjściem, dołącz tylko zamykający tag ?>.

Ogólnie można jednak zastosować szablony w lepszy sposób, spróbuj sprawdzić buforowanie wyjściowe.

3

Zamieszczenie "echo file_get_contents()" z "include()" zgodnie z sugestią GordonM działało dokładnie tak, jak było to konieczne. nie mogę przegłosować, ponieważ jestem zbyt nowy, ale na moje potrzeby jest to bezpośrednia odpowiedź na nagłówek pytania.

1
$code = '<?php 
function GetBetween($content, $start, $end) { 
    $r = explode($start, $content); 
    if (isset($r[1])){ 
    $r = explode($end, $r[1]); 
    return $r[0]; 
    } 
    return ''; 
}'; 

function _readphp_eval($code) { 
    ob_start(); 
    print eval('?>'. $code); 
    $output = ob_get_contents(); 
    ob_end_clean(); 
    return $output; 
} 

print _readphp_eval($code); 
Powiązane problemy