Задать вопрос

Как узнать, была ли изменена переменная в php?

Здравствуйте!

Случайно захотел проверить, изменена ли переменная, и не нашел такого функционала в php.

Что я имею в виду:

<?php
    $a = 5;
    $a = $a + 1;
    
    foo($a); // true
?>


Где foo - наша функция, которая проверяет на изменение переменную.

Есть ли что-то подобное в php? Может, я не там или не так искал?
  • Вопрос задан
  • 3523 просмотра
Подписаться 4 Оценить Комментировать
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
В теории подобное можно реализовать на уровне интерприатора своими силами (изменив zval контейнер и добавив какую-то функцию в язык аля is_dirty). Но зачем? Обычно нужно только убедиться что переменная не может быть изменена (immutable) но такого в php нету, во всяком случае для скаляров. Они и так immutable - при изменении результат записывается в переменную, но это уже совершенно другой результат. так что он по определению "не изменен".

В любом случае, на практике такие проверки сомнительны и я не вижу практической пользы от этого. Если вам нужно иметь паременную, которую никто не может изменить - можно использовать константы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
IgorO2
@IgorO2
73
как вариант, можно использовать доп. переменную
$a = 5;
$b = $a;
$a = $a + 1;

foo($a, $b);
public function foo($par1, $par2) {
    if ($par1 === $par2) {
        return "Переменная не изменялась или была возвращена в исходное состояние"
    } else {
        return "Переменная изменилась"
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы