Чтобы было ясно, я не хочу создавать один и тот же класс несколько раз. Я хочу создать его экземпляр только один раз и отслеживать любые изменения, внесенные в этот экземпляр, по некоторым ссылкам Возможно ли это, и если да, то как это можно сделать? Спасибо!
Конечно, это возможно. Вы можете сделать это буквально:
Прежде всего, поскольку вы не хотите создавать экземпляр класса несколько раз, просто создайте его один раз:
$instance = new Class();
Затем вы хотите отслеживать изменения, внесенные в этот экземпляр. Я не знаю точно, что вы имеете в виду. Вероятно, вы хотите сохранить только один экземпляр. Вы просто можете сделать это, так как вы создали только один раз, вы можете обратиться к этому экземпляру с помощью переменной $instance
.
Кроме того, вы можете "ссылаться" на $instance
также и на некоторые другие переменные:
$reference = $instance;
Теперь вы можете получить доступ к единственному экземпляру Class
с помощью переменной $instance
и $reference
.
Если вам нужно контролировать экземпляр, я предлагаю вам создать Decorator , который выполняет эту работу:
$decorator = new ClassDecorator(new Class());
Затем декоратор может работать как перехватчик, прежде чем что-либо достигнет Class
.
Чтобы узнать, изменилось ли внутреннее состояние класса, вы также можете использовать функции serialize
и unserialize
:
$instance = new Class();
$snapshot = serialize($instance);
...
# more code, $instance is changed or not, we don't know
...
$changed = $snapshot != serialize($instance);
Надеюсь, это полезно.