具有类变量的Php If-Condition不起作用

时间:2011-11-18 13:13:37

标签: php variables object if-statement

class SignUp
{
      var $pass;
      var $repass;
      var $eMail;
      var $userName;

    function __construct($p,$rep,$uName,$mail)
    {
        $this->pass     = $p;
        $this->repass   = $rep;
        $this->userName = $uName;
        $this->eMail    = $mail;
    }

    public function checkData() 
    {
        if ($this->pass != $this->repass)
        {
            return 2;
        }
     }
}

此代码似乎不起作用,我不知道为什么..即使它们是相同的,它总是返回2.

以下是我如何调用对象

$ch = new SignUp($_POST['password'], $_POST['repassword'], $_POST['uname'], $_POST['emailID']);
echo $ch->checkData();

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:3)

变量名称混乱

很可能是问题是由我称之为非常突出的代码气味引起的。每个变量有三个不同的名称,而不只是一个。有这么多不同的变量名称很容易出错,然后结果将是我们看到的结果,因为其中一个变量总是为NULL

E.g。密码是 - 密码 - 通过 - p

在每个地方使用密码!其他人一样。

每个结果都应该返回

在相同的情况下也返回一些东西(我会返回TRUE / FALSE):

if ($this->password == $this->passwordRepeat)
{
    return TRUE;
}

return FALSE;

方法名称错误

重命名您的方法。它会对密码进行比较,因此请将其命名为passwordsIdenticalcomparePasswords

答案 1 :(得分:2)

您可以轻松地将其隔离到$ _POST变量无法正常工作。在比较不起作用的意义上,班级没有任何问题:

<?php
class SignUp{

      var $pass;
      var $repass;
      var $eMail;
      var $userName;

    function __construct($p,$rep,$uName,$mail){
        $this->pass=$p;
        $this->repass=$rep;
        $this->userName=$uName;
        $this->eMail=$mail;
    }


    public function checkData(){
        if($this->pass!=$this->repass)
        return 2;

    }
}

$a = new SignUp( "php", "notphp", "", "" );
$b = new SignUp( "php", "php", "", "" );

var_dump( $a -> checkData() );
//int(2)
var_dump( $b -> checkData() );
//NULL
var_dump( $a -> checkData() === $b -> checkData() ); 
//bool(false), they return different results.
?>

HTML提交表格是什么样的?

答案 2 :(得分:-2)

<?php

/ *检查此代码* /

 class SignUp{

      public $pass;
      public $repass;
      public $eMail;
      public $userName;

function __construct($p,$rep,$uName,$mail){
    $this->pass=$p;
    $this->repass=$rep;
    $this->userName=$uName;
    $this->eMail=$mail;
}


public function checkData(){
    if($this->pass!=$this->repass)
        return 2;

}



}
?>

答案 3 :(得分:-3)

替换此

如果($这 - &GT;传= $这 - &GT;!再经过)

if(trim($this->pass) != trim($this->repass))将有效