我测试客户端和服务器端的用户输入。在服务器端,有一个简短的类,由静态函数组成,用于验证用户输入。课程注册和登录会调用这些功能。我担心的是我不应该使用静态函数。我应该使用静态函数来验证用户输入吗?感谢。
/*check*/
class check
{
static function empty_user($a)
{
return (int)!in_array('',$a);
}
static function name($a)
{
return preg_match('/^[a-zA-Z-\.\s]{1,40}$/',$a);
}
static function email($a)
{
return preg_match('/^[a-zA-Z0-9._s-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{1,4}$/',$a);
}
static function pass($a)
{
return preg_match('/^[a-zA-Z0-9!@#$%^&*]{6,20}$/',$a);
}
}
答案 0 :(得分:4)
该类的目的最终与静态成员函数与非静态成员函数的决策无关。如果类的对象具有状态,或者该类仅仅是命名空间的替身,那么重要。
在后一种情况下,该类只是在一个公共命名空间中收集一堆松散相关的函数,但是你永远不会实例化该类。在前一种情况下,您应该将类的设计目的所共有的所有数据作为私有成员放入类中,并在您的(非静态)函数中使用这些成员。
在您的示例中,我可以看到您将$a
设为私人成员:
class CheckInput
{
private $data;
public function init($a) { $this->data = $a; } // or write a constructor
public function email() { ... $this->data ... }
// ...
}
这样,您为每组输入数据实例化一个CheckInput
对象。
答案 1 :(得分:0)
我对此的看法是,如果这只是一个Utility类,那么静态函数应该可以完成这项工作。