Php 方法在应返回true时返回false

Php 方法在应返回true时返回false,php,oop,exception,methods,pdo,Php,Oop,Exception,Methods,Pdo,我不明白为什么这个方法总是返回false。我正在检查输入的密码的长度。它肯定超过5个字符。输入字段的名称是正确的。但它总是抛出异常抛出新异常(“密码必须至少包含6个字符”) 方法: public function checkPassword(){ if(strlen($this->post_data['register_password']) > 5){ }else{ throw new Exception("Password

我不明白为什么这个方法总是返回false。我正在检查输入的密码的长度。它肯定超过5个字符。输入字段的名称是正确的。但它总是抛出异常
抛出新异常(“密码必须至少包含6个字符”)

方法:

public function checkPassword(){
        if(strlen($this->post_data['register_password']) > 5){

        }else{
            throw new Exception("Password must contain at least 6 characters.");
        }
    }
电话:

if( isset($_POST['register-submit'])){  
    $error = '';
    $register = new register($_POST, $dbh);
        try {
            if($register->checkUsername()){
                if($register->checkPassword()){

                }
            }
        } catch (Exception $e) {
            $error .= '<span style="color:red;">' . $e->getMessage() . '</span>';
        }
}

使用
$\u POST
创建类
register
,然后使用
$this->POST\u data
获取
register\u password
。我怀疑
$this->post_data
有问题,添加
var_dump
进行调试:

public function checkPassword(){
    if(strlen($_POST['register_password']) > 5){
        return true;

    }else{
        // for debug
        // var_dump($this->post_data['register_password']);
        throw new Exception("Password must contain at least 6 characters.");
    }
}
添加
var\u dump
以调试
\u构造

public function __construct($post_data, PDO $dbh){
    $this->error = array();
    $this->post_data = array_map('trim', $post_data);
    var_dump($this->post_data);
    $this->dbh = $dbh;
}

使用
$\u POST
创建类
register
,然后使用
$this->POST\u data
获取
register\u password
。我怀疑
$this->post_data
有问题,添加
var_dump
进行调试:

public function checkPassword(){
    if(strlen($_POST['register_password']) > 5){
        return true;

    }else{
        // for debug
        // var_dump($this->post_data['register_password']);
        throw new Exception("Password must contain at least 6 characters.");
    }
}
添加
var\u dump
以调试
\u构造

public function __construct($post_data, PDO $dbh){
    $this->error = array();
    $this->post_data = array_map('trim', $post_data);
    var_dump($this->post_data);
    $this->dbh = $dbh;
}


尝试将
var\u dump($\u POST)
放在调用代码的顶部。确保密码的变量名正确。我注意到您有
register submit
作为提交按钮,有
register\u password
作为密码。您是否将连字符(
-
)与下划线(
)混合在一起?

尝试将
var\u dump($\u POST)
放在调用代码的顶部。确保密码的变量名正确。我注意到您有
register submit
作为提交按钮,有
register\u password
作为密码。你把连字符(
-
)和下划线(
-
)混在一起了吗?

你的函数抛出错误了吗?
$this->post\u data['register\u password']?呃。。。如果密码长度相同,则认为密码相同。所以“fish”和“j2o3”被认为是相同的。@crm:What's
var_dump($this->post_data['register_password')输出?@Kolink我认为这是用于注册的。他正在验证密码是否至少包含6个字符,以确保密码足够强,可以创建帐户。您的函数是否引发了错误?
$this->post_data['register_password']
?呃。。。如果密码长度相同,则认为密码相同。所以“fish”和“j2o3”被认为是相同的。@crm:What's
var_dump($this->post_data['register_password')输出?@Kolink我认为这是用于注册的。他只是在验证至少有6个字符的密码,以确保创建帐户的密码足够强大。很好,他实际上并没有返回true。不返回任何内容,这意味着返回结果为null,这是错误的。可能最好对代码进行解释。如果这个答案解释了这个事实而不是仅仅转储一个代码片段,那就太好了。@srain:请看OP的评论。它返回
NULL
@AmalMurali,我想
$this->post\u data
有问题,所以你可以用
$\u POST
代替
$this->POST\u data
,我更新了答案。或者您可以粘贴类
寄存器
或整个类的
\u构造
函数。我们会检查它。@AmalMurali,添加
var\u dump
来调试
\u构造
,将输出粘贴到您的问题中,我认为
注册密码
将为
。很好,他实际上并没有返回true。不返回任何内容,这意味着返回结果为null,这是错误的。可能最好对代码进行解释。如果这个答案解释了这个事实而不是仅仅转储一个代码片段,那就太好了。@srain:请看OP的评论。它返回
NULL
@AmalMurali,我想
$this->post\u data
有问题,所以你可以用
$\u POST
代替
$this->POST\u data
,我更新了答案。或者您可以粘贴类
寄存器
或整个类的
\u构造
函数。我们会检查它。@AmalMurali,添加
var\u dump
来调试
\u构造
,将输出粘贴到您的问题中,我认为
注册密码
将为
。很好的捕获。不过,如果你把它说出来而不是提出问题会更好+1无论如何@阿马尔穆拉里:我只是从上面抄袭了我的评论。这足以让人明白这一点,并给出一个接受/结束的答案。不过,如果你把它说出来而不是提出问题会更好+1无论如何@阿马尔穆拉里:我只是从上面抄袭了我的评论。这足以让人明白这一点,并给出一个接受/结束的答案。