我有一個相當大的INI,我解析出並驗證以確保所有必需的設置都已設置。如果我需要添加/刪除INI設置,這是一個巨大的痛苦。INI解析並驗證所需字段
在我的PHP腳本我用的是這樣的:
$ini = parse_ini_file($this->ini_filename, true);
// Debug Settings
if(isset($ini['debug_settings']['debug'])) {
$this->debug = $ini['debug_settings']['debug'];
} else {
$this->failedINIValidation("['debug_settings']['debug'] not configured in the INI file: ");
}
failedINIValidation()給我發送電子郵件丟失INI字段/值的/ etc ...
想使這個更通用, 有什麼想法嗎?
我的建議是不使用INI ...使用XML,製作XSD並通過模式使用驗證...讓libxml爲您完成工作......然後您只需更改模式和XML配置。例如:http://www.php.net/manual/en/domdocument.schemavalidate.php#62032現在你必須編寫一些專門的代碼來爲libxml生成的錯誤提供更多的上下文,但我認爲這可以因爲你可以訪問原始錯誤信息並且可以從那裏將它抽象爲特定的錯誤類型/消息,這些錯誤類型應該或多或少保持不變。 – prodigitalson 2011-04-27 19:36:59
可以讓驗證更容易理解,但是我仍然必須在setter/getters上有一些邏輯,除非我失去了一些東西? – 2011-04-27 20:05:41
什麼setter/getters?我認爲這是一個簡單的驗證程序,而不是直接使用的完整配置對象...基本上,您只需驗證XML ...然後將該XML轉換爲數組以便在您的實際應用程序中使用(或包裝在配置對象中的數組)...你當然可以直接使用XML文檔,並用xpath將值從中拉出來,但這看起來過度。驗證器和配置對象應該彼此分離。如果您需要將xml轉換爲數組以供常規使用的示例邏輯,請查看「Zend_Config_Xml」的代碼。 – prodigitalson 2011-04-27 20:07:37