Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wczytywanie skryptu phtml do zmiennej
MikroUser
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 5.09.2006

Ostrzeżenie: (0%)
-----


Problem natury:

plik.phtml
  1. <div>
  2. <? echo 'plik.phtml'; ?>
  3. </div>


index.php
  1. $content = file_get_contents('plik.phtml');
  2. echo $content;


niestety funkcja file_get_contents wczytuje zawartość pliku, a nie wykonuje jej dlatego wynik jest oczywisty:
  1. <div>
  2. <? echo 'plik.phtml'; ?>
  3. </div>


Celem jest aby wynik był postaci:
  1. <div>
  2. plik.phtml
  3. </div>


Jak tego dokonać?

PS. Co już sprawdziłem:
  • include_once() - wyświetla zawartość pliku i zwraca '1'
  • file() - wczytuje zawartość pliku, ale nie wykonuje jej
  • wykonanie pliku na zasadzie file_get_contents('http://www.example.com/plik.phtml'); nie wchodzi w grę
  • próbowałem się przegrzebać przez ZEND_VIEW, ale się pogubiłem w klasach i straciłem tylko czas.
  • jak na razie korzystam z rozwiązania:
    plik.phtml
    1. return '<div>'.$zmienna.'</div>'

    ale robi się to kłopotliwe przy dużej ilości htmla.

dziękuję za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Noidea
post
Post #2





Grupa: Zarejestrowani
Postów: 226
Pomógł: 61
Dołączył: 20.08.2010

Ostrzeżenie: (0%)
-----


Cytat
wykonanie pliku na zasadzie file_get_contents('http://www.example.com/plik.phtml'); nie wchodzi w grę


To jest chyba najrozsądniejsze rozwiązanie, jeśli chodzi o pobranie wyniku działania skryptu PHP. Jeśli "nie wchodzi w grę", bo nie masz uprawnień do pobierania plików z zewnątrz (allow_url_fopen), to spróbuj użyć curl albo fsockopen.

Inne możliwości:
1. Z użyciem buforowania wyjścia.
  1. <?php
  2.  
  3.  
  4. include "plik.phtml";
  5. $var = ob_get_contents();
  6.  
  7. echo "Zawartość zmiennej: " . $var;
  8.  
  9. ?>


2. eval
  1. <?php
  2.  
  3. $content = file_get_contents( "plik.phtml" );
  4. $var = eval( "?>" . $content );
  5.  
  6. echo "Zawartość zmiennej: " . $var;
  7.  
  8. ?>
Go to the top of the page
+Quote Post
MikroUser
post
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 5.09.2006

Ostrzeżenie: (0%)
-----


Noidea rozwiązanie 1 działa poprawnie.

1) możesz jedynie przybliżyć jakie są zagrożenia takiego rozwiązania i jakie są wady? bo nie mogę się doszukać.
2) dlaczego rozwiązanie file_get_contents('http://www.example.com/plik.phtml') jest najrozsądniejsze? co za tym przemawia?

dzięki.
Go to the top of the page
+Quote Post
posiadacz
post
Post #4





Grupa: Zarejestrowani
Postów: 46
Pomógł: 2
Dołączył: 2.04.2009

Ostrzeżenie: (0%)
-----


Jeśli pracujesz nad systemem szablonów to radzę przygotować np w tablicy listę nazw plików do wczytania i zrobić include na samym końcu skryptu.
Według mnie tak będzie znacznie prościej i ładniej.
Go to the top of the page
+Quote Post
MikroUser
post
Post #5





Grupa: Zarejestrowani
Postów: 55
Pomógł: 1
Dołączył: 5.09.2006

Ostrzeżenie: (0%)
-----


Rozwiązanie z tablicą może i sensowne, ale teraz chcę zrozumieć wady i zalety obu rozwiązań (za tablicą i z ob_start(); ).

Ktoś jest w stanie je wyjaśnić?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 11:42