Функция «пусто» в PHP 8 претерпела некоторые изменения по сравнению с предыдущими версиями. В PHP 8 «пустая» функция больше не поддерживает косвенные переменные или возвращаемые значения функции. Я объясню изменения и предложу некоторые альтернативные методы, которые вы можете использовать.
В предыдущих версиях PHP в «пустую» функцию можно было передать косвенную переменную или возвращаемое значение функции. Например:
$var = 'Hello';
$indirectVar = 'var';
// Indirect variable
if (empty($$indirectVar)) {
echo 'Variable is empty';
}
// Function return value
function getValue() {
return '';
}
if (empty(getValue())) {
echo 'Value is empty';
}
Однако в PHP 8 приведенный выше код приведет к синтаксической ошибке. Чтобы добиться аналогичной функциональности в PHP 8, вы можете использовать функцию «isset» в сочетании с функцией «empty». Вот пример:
$var = 'Hello';
$indirectVar = 'var';
// Indirect variable
if (!isset($$indirectVar) || empty($$indirectVar)) {
echo 'Variable is empty';
}
// Function return value
function getValue() {
return '';
}
if (!isset($value) || empty(getValue())) {
echo 'Value is empty';
}
В обновленном коде мы сначала проверяем, установлена ли переменная с помощью функции isset. Если он не установлен или установлен, но пуст, мы считаем его пустым.