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