我寫了一個類來驗證表單輸入,它知道某些字段(輸入數組中的鍵)並允許爲它指定規則。這將允許創建一個驗證者來處理聯繫人數據,例如字段爲"title"
,"name"
和"email"
。對象作爲(全局)常量在php中
我設計的想法是,這個驗證器可以重複使用在網站上傳播的多種形式。畢竟,這些表格中的許多可能需要填寫一些聯繫數據。我唯一沒有想到的是,php不允許用對象初始化常量或靜態字段。
我希望將它指定在某些文件utils.php
用我的驗證作爲
const CONTACT_VALID = new Validator(...);
,這樣我可以只require "utils.php"
離不開它被初始化每次訪問此常數。這顯然不起作用,並且對於靜態變量也是行不通的。 我也想過像
static CONTACT_VALID = NULL;
static function get_contact_valid() {
if (is_null(CONTACT_VALID))
CONTACT_VALID = new Validator();
return CONTACT_VALID;
}
,但我不能完全肯定這是否會產生預期的效果,因爲我是比較新的PHP(和網絡技術在一般)。
所以我的問題:有沒有可能有一個對象,使我可以在網站上的任何地方使用它,而無需一次又一次地初始化它?
不知道是誰給了downvote - 這是正確的答案。這正是單身人士的目的。 「常量」(它不是真的)對象最普遍使用的是數據庫連接。你不想在十幾個不同的類中連接你的數據庫,所以你需要保存一個記錄你的數據庫連接的單例。緩存也很常見。 –
首先,這不是單一模式,因爲它在OOP中是已知的(對於我來說,這仍然是GoF描述的模式)。我寧願將它稱爲實例類或Factory模式的一些簡單應用。此外,單例模式通常被認爲是[反模式](http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons)。同樣在這種情況下,我可能需要多個驗證器實例(聯繫信息,航班信息,投訴等)。總結:工廠模式可能會導致更好的答案... –
@JoshfromQaribou我是一個應負責任的投票。我的論點可以在我之前的評論中找到。另外:你是對的,數據庫是單身人士有意義的少數例子之一。 –