2011-10-16 16 views
9

Czy to możliwe, aby zrobić jakPrzypisywanie zawartość do zmiennej z include/require_once

$var = require_once('lol.php'); 

tak, że wszelkie wyjścia HTML lol.php nie pójdzie wewnątrz $var?

Wiem o buforowaniu wyjściowym, ale czy jest tam jakaś specjalna wbudowana funkcja, która już to robi?

+0

Jeśli uważasz * * trzeba to zrobić, należy prawdopodobnie tylko naprawić dołączonego pliku. Moduły (w przeciwieństwie do zwykłych, głupich szablonów), które chwytają 'stdout' i traktują je jak swoje, są zepsute. – delnan

+0

Możesz sprawić, że zawartość 'lol.php' zwróci tablicę lub obiekt. – yoda

+0

Niestety nie mam kontroli nad lol.php ... – Alex

Odpowiedz

19

$var = require_once('lol.php'); spowoduje tylko przesłanie wartości zwracanej pliku do $var. Jeśli nic nie zwrócisz, będzie to tylko null.

Jeśli chcesz wyjście trzeba będzie użyć buforowania wyjścia:

ob_start(); 
require_once('lol.php'); 
$var = ob_get_clean(); 
6

Przypisanie z =include() rozmowy będzie Ci tylko możliwą wartość return z tego skryptu, a nie każdy wyjściowego.

Aby było to możliwe trzeba by zmodyfikować skrypt zawierać uchwycić wyjście:

<?php 
     ob_start(); 

     ... 

     return ob_get_clean(); 
?>