2010-12-09 43 views
1

Est-il possible de vérifier si un document inclus via include('to_include.php') a retourné quelque chose?Comment vérifier si un include() a retourné quelque chose?

Voici à quoi il ressemble:

//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; 
} 

Donc après que j'ai inclus to_include.php dans mon document principal que je voudrais vérifier si quelque chose a été généré par le document inclus.

Je sais que la solution évidente serait d'utiliser simplement function_that_generates_some_html_sometimes_but_not_all_the_times() dans le main_document.php, mais ce n'est pas possible dans ma configuration actuelle.

Répondre

1

faire function_that_generates_some_html_sometimes_but_not_all_the_times() retour quelque chose quand il sort quelque chose et définir une variable:

//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; 
} 
+0

Vous astucieux * §!? & # :-) – maartenmachiels

+0

content je pourrais aider :))) – Catalin

1

Si vous parlez de sortie généré, vous pouvez utiliser:

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; 
} 

aurait peut-être à modifier les appels ob_ ... Je pense que ce droit de la mémoire, mais la mémoire est celle d'un poisson rouge.

Vous pouvez également définir le contenu de la variable comme $GLOBALS['done'] = true; dans le fichier d'inclusion lorsqu'il génère quelque chose et vérifiez cela dans votre code principal.

+0

Merci! Je vais essayer ça. – maartenmachiels

0

Je ne suis pas sûr si je manque le point de la question, mais ....

function_exists(); 

retourne vrai si la fonction est définie.

include() 

retourne true si le fichier est inclus.

envelopper si un ou les deux dans un cas() et vous êtes bon pour aller, à moins que je suis mauvais bout du bâton

if(include('file.php') && function_exists(my_function)) 
{ 
// wee 
} 
+0

Nous vous remercions de vos commentaires, mais que le fichier ne soit pas inclus ou non. Ma question est de savoir si le fichier inclus a généré quelque chose. Avez-vous des idées à ce sujet? – maartenmachiels

+0

function_exists() testera si la fonction dans le fichier inclus existe. Si vous voulez voir si cela va sûrement sortir vous obtenez juste la fonction pour retourner une valeur ... – piddl0r

1

Compte tenu du libellé de la question, il semble que si vous voulez ceci:

//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; 
} 

Ce qui devrait fonctionner dans votre situation. De cette façon, vous n'avez pas à vous soucier de la mise en mémoire tampon de sortie, du fluage variable, etc.

0

essayer

// 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

Merci, c'est tout! Mais catalin était premier ;-) – maartenmachiels