Как узнать, была ли вызвана функция return () из включенного файла. Проблема в том, что include () возвращает int 1, даже если return () не вызывался. Вот пример ...
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);
Редактировать: В качестве временного решения я ловлю вывод из include () (из операторов echo / print). Если был получен какой-либо вывод, я игнорирую возвращаемое значение из include ().
Не красиво, но обеспечивает необходимую функциональность в моем веб-приложении / фреймворке.