Как вы думаете, это хорошая идея?
Допустим, у вас есть компонент приложения, который используется другими компонентами для извлечения / обновления данных в db. Это в основном класс с методами get (), set (), update ().
Было бы хорошей идеей для того, чтобы этот компонент обновлял (или устанавливал) данные только в своих свойствах при вызове и на __destruct также обновлял db? Или он должен напрямую обновлять db для каждого вызова набора / обновления?
Обновление базы данных об уничтожении объекта пахнет мне немного как побочный эффект программного обеспечения. То есть действие, которое происходит в неожиданном и несколько неявном месте. При просмотре вашего кода было бы не очевидно, что действие базы данных происходит при __destruct()
, даже если вы вызываете его явно. Будущие разработчики кода (включая вас самих) можно легко смутить, пытаясь выследить ошибку, связанную с несогласованными данными, но не видя вызовов вызовов базы данных или методов, похожих на взаимодействие данных при просмотре кода.
Я бы посоветовал это сделать.
Попытка выбросить исключение из деструктора (вызываемого во время завершения скрипта) вызывает фатальную ошибку.
Так что, когда у вас есть исключение? В любом случае, я думаю, что это не очень хорошая идея, вы не можете контролировать поток работы, и легко вести отладочный ад.