Comment puis-je savoir si return() a été appelé depuis le fichier inclus. Le problème est que include() renvoie 'int 1', même si return() n'a pas été appelé. Voici un exemple ...PHP - Comment puis-je vérifier si return() a été appelé à partir d'un fichier include() 'd?
included_file_1.php
<?php
return 1;
included_file_2.php
<?php
echo 'no return here, meep';
main.php
<?php
$ret = include('included_file_1.php');
// This file DID return a value, int 1, but include() returns this value even if return() wasn't called in the included file.
if ($ret === 1)
{
echo 'file did not return anything';
}
var_dump($ret);
$ret = include('included_file_2.php');
// The included file DID NOT return a value, but include() returns 'int 1'
if ($ret === 1)
{
echo 'file did not return anything';
}
var_dump($ret);
Modifier: En tant que solution temporaire, j'attrape la sortie de include() (à partir d'instructions echo/print). Si une sortie a été produite, j'ignore la valeur de retour de include().
Pas joli, mais il offre les fonctionnalités dont j'ai besoin dans mon application web/framework.
Oui, mais si le script est inclus, include() retournera la valeur passée à return() dans le fichier inclus OR 'int 1' pour indiquer une inclusion réussie. Donc, quand include() renvoie 'int 1', je ne peux pas dire s'il s'agit d'une valeur de retour du fichier inclus ou include(). –
Non-sens. Si vous CONNAISSEZ que le fichier renvoie sa propre valeur, vous pouvez supposer que la valeur est la valeur que vous vouliez qu'elle renvoie. Inclure ne remplacera jamais votre valeur de retour pour envoyer 1 qu'il a terminé. Il s'agit de savoir exactement ce que font vos fichiers et quelles sont les valeurs qui en découlent. Si vous savez que votre fichier ne renvoie rien, alors la valeur devrait toujours être 1. – animuson
Animuson: Oui, mais je ne sais pas ce que font les autres fichiers. Il y aura également des cas de bords qui feront sauter le cadre, et seront un pita pour que quelqu'un d'autre puisse déboguer. –