PHP: альтернатива использованию () неанонимным функциям

Вы можете сделать это:

$external = 1;
$change = function($number) use(&$external) {
$external = $number;
};

$change(5);
echo $external; //> 5

Но вы не можете сделать это:

$external = 1;
function change($number) use(&$external) {
$external = $number;
}

Вы получите:

Ошибка синтаксического анализа: синтаксическая ошибка, неожиданное использование (T_USE), ожидание ‘{‘.

Какие есть альтернативы?

2

Решение

use() используется только в замыканиях для наследования переменных из родительской области. Из руководства:

Замыкания также могут наследовать переменные из родительской области. Любые такие переменные должны быть переданы в конструкцию языка использования.

Если вы хотите использовать переменную по ссылке в обычной функции, используйте:

$external = 1;

function change($number, &$external) {
$external = $number;
}
change(5, $external);

Или, чтобы не передать его, используйте его как глобальный (если $external находится в глобальном масштабе):

$external = 1;

function change($number) {
$GLOBALS['external'] = $number;
}
change(5);
7

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector