2016-10-11 18 views
0

爲了我的代碼的健全性測試,我把斷言在我的代碼中的各個地方。防止數據庫提交在斷言失敗php

我希望它是每當一個斷言命中時,數據庫事務不應該完成(即數據不應該提交給數據庫,而應該回滾)。

我找不到任何干淨的方法來實現這一點。

我正在使用代碼點火器框架。

任何想法如何實現這一目標?

+0

這不是assert()的用途。只要檢查錯誤正常和回滾,如果你看到一個。 –

+1

不應該使用自動提交斷開事務的數據庫。正常的數據庫行爲是在連接/事務被放棄時自動回滾。 –

+0

@John - 是的,同意。你是對的。功能不應依賴於斷言。理想情況下,斷言在生產中將被禁用,從而防止出現任何錯誤回滾。所以我們應該明確地檢查錯誤並在發生錯誤時回滾。 – Anuj

回答

0

該功能不應該是斷言的一部分。如果是這種情況,則禁用斷言時,生產模式下的功能將會失真。

我們可以在斷言失敗時執行額外的數據庫操作來記錄和跟蹤錯誤的更多細節,但不應該中止/干擾外部事務。

斷言應僅用作調試功能。您可以使用它們進行健全性檢查,測試條件應始終爲TRUE,並且如果不是,則會指示一些編程錯誤,或檢查是否存在某些功能,如擴展功能或某些系統限制和功能。

斷言不應用於正常的運行時操作,如輸入參數檢查。作爲一個經驗法則,如果斷言檢查沒有被激活,你的代碼應該能夠正常工作。

More details