Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个php类中有很多方法是正常的吗?_Php_Methods - Fatal编程技术网

在一个php类中有很多方法是正常的吗?

在一个php类中有很多方法是正常的吗?,php,methods,Php,Methods,我正在开发一个用于表单验证的php类,该类验证了不同的内容,例如,空、长度等 这里有两种方法。正如标题所说,在一个类中有一堆方法是正常的吗只要回答是或否就足够了。 //检查用户名是否为空 函数验证\空\用户名(){ 如果($this->empty_username){ echo“请填写用户名字段””; 返回false; } } //检查密码是否为空 函数验证\空\密码(){ 如果($this->empty\u密码){ echo“请填写密码字段””; 返回false; } } //检查电子邮件是否

我正在开发一个用于表单验证的php类,该类验证了不同的内容,例如,空、长度等

这里有两种方法。正如标题所说,在一个类中有一堆方法是正常的吗只要回答是或否就足够了。

//检查用户名是否为空
函数验证\空\用户名(){
如果($this->empty_username){
echo“
  • 请填写用户名字段”
  • ”; 返回false; } } //检查密码是否为空 函数验证\空\密码(){ 如果($this->empty\u密码){ echo“
  • 请填写密码字段”
  • ”; 返回false; } } //检查电子邮件是否为空 函数验证\u空\u电子邮件(){ 如果($this->empty_email){ echo“
  • 请填写电子邮件字段”
  • ; 返回false; } } //检查用户名长度是否短 函数验证\用户名\长度\最小值(){ 如果($this->get\u username\u length<3){ echo“
  • 提供的用户名太短了!
  • ”; 返回false; } } //检查密码长度是否短 函数验证\密码\长度\最小值(){ 如果($this->get_password_length<5){ echo“
  • 提供的密码太短了!
  • ”; 返回false; } } //检查电子邮件长度是否短 函数验证\电子邮件长度\最小值(){ 如果($this->get_email_length<5){ echo“
  • 提供的电子邮件太短了!
  • ”; 返回false; } }
    这不是
    批次
    。。。只要它有道理,不违反原则,你就没事。只需遵循编程规则和OOP


    您所展示的这些方法显然有些关联,如果将它们放在一个类中,这不是问题。我认为,如果这种逻辑散布在源代码中,情况会更糟。

    我假设您将同时使用所有这些验证函数,因此我建议将它们放在一起

    但一般来说,一个类中可以有任意多个函数,但最终会出现这样一种情况:函数太多,以至于没有使代码更简单,反而造成了一片混乱


    我只会将不相关的代码放在不同的函数中。因为当你有相似的代码部分时,通常更容易在单个函数中进行编码。

    根据我的经验,这是这样的:你开始编写你的类,然后你回来给一个方法添加一些东西,然后你可能会用相似的功能扩展你的类,最后你会意识到,如果它变得脏了,并且有很多东西,那么您可以将其合并到单个(私有)函数中,这样不仅可以减少代码的长度,还可以使其更易于维护


    所以我的建议是:总是花点时间,想想你要做什么,你要实现的方法是否是一系列子函数,这些子函数本身在其他地方是否有用。尽量使函数原子化,但只将需要的函数声明为公共函数。

    是的。只要类中的方法是相关的,就可以使用。而且你的函数列表很短。如果你想验证,可以使用。使用起来也很简单。

    当然,只要这些方法与类相关。你这里的很多方法似乎都非常相关,我可能会在一个“检查电子邮件”呼叫下将它们全部弹出-但是说了这么多,让类做很多事情没有什么错。不能投票,需要@walther 15 rep。但是谢谢你的回答:)@1to1k,没问题,你可以稍后再来投票;)顺便说一句,如果你需要帮助优化你的代码,我们有一个很好的网站:我想我会制作3个以上的函数,并把所有类似的函数放在里面。像check_电子邮件将有两个功能,让我们说check_length check_length等。。因为我正在一个接一个地调用方法。。我还可以调用一个主要方法,比如check_email,然后从内部调用其他方法(check_length..check_empty)。这听起来是个好主意还是我遗漏了什么@zoran404如何删除我的问题。。人们开始-无论我做什么。。在我失去发布更多问题的能力之前,需要删除它。当然,你会逐个使用这些问题,但是如果你总是以相同的顺序使用它们,那么就没有必要使用多个函数,但是如果你这样做也不是错误的。(如果你想删除这个问题,在它的底部有一个删除按钮,就在标签下面,尽管你不需要这样做,因为你有积极的观点;现在你也可以向上投票)嘿@user3107673。伙计,我试图在一个函数中放置类似的方法,但是当我调用这个函数时,它里面的方法不会被调用,我应该怎么做,这样当我调用这个函数时,它里面的方法也会被调用?thanks@1to1k你能分享你的代码吗?伙计。我根据我所说的改变了密码@user3107673@1to1k有一个语法错误{缺失。除此之外,我可以实例化该类,并且所有函数都工作正常。一个好的做法是在每个函数中放置一个回音,以检查是否调用了所有函数,您可以稍后删除这些函数。请告诉我您遇到了什么错误。嘿@Robert.Mate我正在尝试在函数中放置类似的方法,但当我调用此函数时不调用函数中的方法我应该怎么做,以便在调用函数时也调用函数中的方法?thanks@1to1k如果您使用的是嵌套函数(函数中的函数,或者在您的例子中是方法中的函数),并且您使用的是像“$this”这样的变量/对象,那么您必须传递该变量
    //Checks if is username empty
            function validate_empty_username(){
                if($this->empty_username){
                    echo "<li>Please fill username field</li>";
                    return false;
                }
            }
    
            //Checks if is password empty
            function validate_empty_password(){
                if($this->empty_password){
                    echo "<li>Please fill password field</li>";
                    return false;
                }
            }
    
            //Checks if is email empty
            function validate_empty_email(){
                if($this->empty_email){
                    echo "<li>Please fill email field</li>";
                    return false;
                }
            }
    
            //Check username length is short
            function validate_username_length_min(){
                if($this->get_username_length < 3){
                    echo "<li>Username provided's too short!</li>";
                    return false;
                }
            }
    
            //Check password length if short
            function validate_password_length_min(){
                if($this->get_password_length < 5){
                    echo "<li>Password provided's too short!</li>";
                    return false;
                }
            }
    
            //Check email length if short
            function validate_email_length_min(){
                if($this->get_email_length < 5){
                    echo "<li>Email provided's too short!</li>";
                    return false;
                }
            }