Как проверить, что include () вернул что-нибудь? - PullRequest
1 голос
/ 09 декабря 2010

Можно ли как-нибудь проверить, вернул ли включенный документ через include('to_include.php') что-нибудь?

Вот как это выглядит:

//to_include.php
echo function_that_generates_some_html_sometimes_but_not_all_the_times();

//main_document.php
include('to_include.php');
if($the_return_of_the_include != '') { 
    echo $do_a_little_dance_make_a_little_love_get_down_tonight; 
}

Так что после того, как я включил to_include.php в моем основном документе я хотел бы проверить, было ли что-либо сгенерировано включенным документом.

Я знаю, что очевидным решением было бы просто использовать function_that_generates_some_html_sometimes_but_not_all_the_times() в main_document.php, но это невозможно в моей текущей настройке.

Ответы [ 5 ]

1 голос
/ 09 декабря 2010

Учитывая формулировку вопроса, это звучит так, как будто вы хотите это:

//to_include.php
return function_that_generates_some_html_sometimes_but_not_all_the_times();

//main_document.php
$the_return_of_the_include = include 'to_include.php';
if (empty($the_return_of_the_include)) { 
    echo $do_a_little_dance_make_a_little_love_get_down_tonight; 
} else {
    echo $the_return_of_the_include;
}

Что должно работать в вашей ситуации.Таким образом, вам не нужно беспокоиться о буферизации вывода, ползучести переменных, и т. Д. .

1 голос
/ 09 декабря 2010

make function_that_generates_some_html_sometimes_but_not_all_the_times() возвращает что-то, когда он что-то выводит, и устанавливает переменную:

//to_include.php
$ok=function_that_generates_some_html_sometimes_but_not_all_the_times();

//main_document.php
$ok='';
include('to_include.php');
if($ok != '') { 
    echo $do_a_little_dance_make_a_little_love_get_down_tonight; 
}
1 голос
/ 09 декабря 2010

Если вы говорите о сгенерированном выводе, вы можете использовать:

ob_start();
include "MY_FILEEEZZZ.php";
function_that_generates_html_in_include();
$string = ob_get_contents();
ob_clean();
if(!empty($string)) { // Or any other check
    echo $some_crap_that_makes_my_life_difficult;
}

Возможно, придется настроить вызовы ob_ ... Я думаю, это прямо из памяти, но память принадлежит золотой рыбке.

Вы также можете просто установить содержимое переменной, например $GLOBALS['done'] = true; во включаемом файле, когда он генерирует что-то, и проверить это в основном коде.

0 голосов
/ 09 декабря 2010

1001 * попробовать *

// to_include.php
$returnvalue = function_that_generates_some_html_sometimes_but_not_all_the_times();
echo $returnvalue;

//main_document.php
include('to_include.php');
if ( $returnvalue != '' ){
   echo $do_a_little_dance_make_a_little_love_get_down_tonight; 
}
0 голосов
/ 09 декабря 2010

Я не уверен, что пропустил суть вопроса, но ....

function_exists();

Вернет true, если функция определена.

include() 

возвращает true, если файл включен.

, поэтому оберните один или оба в if (), и все готово, если я не ошибся в конце флешки

if(include('file.php') && function_exists(my_function))
{
 // wee
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...