2012-02-29 12 views
5

Czy uważasz, że to dobry pomysł?Aktualizacja bazy danych na __destruct()?

Załóżmy, że masz komponent aplikacji używany przez inne komponenty do pobierania/aktualizowania danych w db. Jest to w zasadzie klasa z metodami get(), set(), update().

Czy byłoby dobrym pomysłem, aby ten komponent zaktualizował (lub ustawił) dane tylko w jego właściwościach po wywołaniu, a także na __destruct w celu aktualizacji bazy danych? A może powinien on bezpośrednio aktualizować db na każdym wywołaniu zestawu/aktualizacji?

Odpowiedz

5

Aktualizacja bazy danych dotyczącej niszczenia obiektów pachnie trochę jak oprogramowanie side effect. Oznacza to, że akcja ma miejsce w nieoczekiwanym i nieco niejawnym miejscu. Nie byłoby oczywiste, po wyświetleniu kodu, że akcja bazy danych dzieje się po wywołaniu __destruct(), nawet jeśli wywołasz ją jawnie. Przyszli opiekunowie kodów (włącznie z tobą) mogą być łatwo zdezorientowani, gdy próbują wykryć błąd związany z niespójnymi danymi, ale nie widzą żadnych wywołań do bazy danych lub wywołań metod przypominających interakcje danych podczas przeglądania kodu.

Odradzam tego.

2

Próba wyjątek od destructor (zwanego w czasie zakończenia skryptu) powoduje błąd krytyczny.

A co z tym, że masz wyjątek? W każdym razie myślę, że to nie jest dobry pomysł, nie możesz kontrolować przepływu pracy i łatwo jest prowadzić piekło debugowania.

Powiązane problemy