Можно ли иметь операторы return внутри включенного файла, который находится внутри функции в PHP?
Я хочу сделать это, поскольку у меня есть много функций в отдельных файлах, и у всех их есть большой кусок общего кода наверху.
As in function sync() { include_once file.php; echo "Test"; }
file.php:
... return "Something";
В настоящий момент, как кажется, что-то выходит из функции include_once, а не из функции синхронизации, возможно ли, чтобы возвращаемый файл возвращался?
Извините за слегка запутанный вопрос, надеюсь, что я сделал это разумным.
Благодаря,
Вы можете вернуть данные из включенного файла в вызывающий файл с помощью оператора return
.
include.php
return array("code" => "007", "name => "James Bond");
file.php
$result = include_once "include.php"; var_dump("result);
Но вы не можете назвать return $something;
и иметь его как оператор возврата в скрипте вызова. return
работает только в пределах текущей области.
РЕДАКТИРОВАТЬ:
Я хочу сделать это, поскольку у меня есть много функций в отдельных файлах, и у всех их есть большой кусок общего кода наверху.
В этом случае, почему бы вам не поместить этот «общий код» в отдельные функции вместо этого – это будет делать работу хорошо, поскольку одной из целей выполнения функций является повторное использование кода в разных местах, не записывая его снова .
return не будет работать, но вы можете использовать выходной буфер, если вы пытаетесь повторить некоторые вещи в вашем файле include и вернуть его где-то в другом месте;
function sync() { ob_start(); include "file.php"; $output = ob_get_clean(); // now what ever you echoed in the file.php is inside the output variable return $output; }
Я не думаю, что это так. Включить не просто поставить код на место, он также оценивает его. Таким образом, возврат означает, что ваш вызов функции include будет возвращать значение.
см. также часть руководства по этому вопросу:
Обработка Возвраты: возможно выполнить оператор return () внутри включенного файла, чтобы завершить обработку в этом файле и вернуться к скрипту, который его вызвал.
Оператор return возвращает включенный файл и не вставляет оператор return.
В руководстве приведен пример (пример № 5), который показывает, что делает «return»:
Упрощенный пример:
return.php
<?php $var = 'PHP'; return $var; ?> testreturns.php <?php $foo = include 'return.php'; echo $foo; // prints 'PHP' ?>
Я думаю, вы ожидаете return
чтобы вести себя скорее как исключение, чем оператор return. Возьмем следующий код, например:
return.php:
return true; ?>
exception.php:
<?php throw new exception(); ?>
Когда вы выполните следующий код:
<?php function testReturn() { echo 'Executing testReturn()...'; include_once('return.php'); echo 'testReturn() executed normally.'; } function testException() { echo 'Executing testException()...'; include_once('exception.php'); echo 'testException() executed normally.'; } testReturn(); echo "\n\n"; try { testException(); } catch (exception $e) {} ?>
… в результате получается следующий результат:
Выполнение testReturn () … testReturn () выполняется нормально.
Выполнение testException () …
Если вы используете метод исключения, убедитесь, что вы поставили свой вызов функции в блок try...catch
поскольку исключения, выполняемые по всему месту, являются плохими для бизнеса.
Rock'n'roll вот так:
index.php
function foo() { return (include 'bar.php'); } print_r(foo());
bar.php
echo "I will call the police"; return array('WAWAWA', 'BABABA');
вывод
I will call the police Array ( [0] => WAWAWA [1] => BABABA )
просто покажи мне, как
как это :
return (include 'bar.php');
Хорошего дня !