我写了一个类来验证表单输入,它知道某些字段(输入数组中的键)并允许为它指定规则。这将允许创建一个验证者来处理联系人数据,例如字段为"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我是一个应负责任的投票。我的论点可以在我之前的评论中找到。另外:你是对的,数据库是单身人士有意义的少数例子之一。 –