Php 回报给我永远真实

Php 回报给我永远真实,php,function,oop,Php,Function,Oop,伙计们,我有这个密码: class Test { public function __construct($valore) { if ($valore != TRUE ) { return false; } else { return true; } } } 在另一页中: $test = new Test(""); if ($test) { echo "result is: TRUE"; } else { echo "resu

伙计们,我有这个密码:

class Test {

public function __construct($valore) {

    if ($valore != TRUE ) {
        return false;
    } else {
        return true;
    }

  }
}
在另一页中:

$test = new Test("");

if ($test) {
echo "result is: TRUE";
} else {
echo "result is: FALSE";
}
为什么一直都是真的??
对不起,谢谢

构造函数没有返回值。所以,如果你想测试这个值,你需要一个方法来为你做这件事

class Test 
{
    private $valore;

    public function __construct($valore) {
        $this->valore = $valore;
    }

    public function test() {
        return (bool) $valore;
    }
}

$test = new Test("");

if ($test->test()) {
    echo "result is: TRUE";
} else {
    echo "result is: FALSE";
}

它始终是真的,因为$test对象始终不是假的,它是一个对象。构造函数的返回值不是您要测试的

class Test {
var $valore;
public function __construct($valore) {

    if ($valore != TRUE ) {
        $this->valore = false;
    } else {
        $this->valore = true;
    }

  }
}

$test = new Test(FALSE);

if ($test->valore === TRUE) {
echo "result is: TRUE";
} else {
echo "result is: FALSE";
}

提问者正在测试$test对象是“true”还是“false”。从构造函数返回的值实际上不是他们在代码中检查的值。他们正在检查的$test对象总是被PHP视为true。$valore变量实际上不会在其执行代码中进行测试。换句话说,构造函数的返回值不会分配给$test。这有点让我的答案变成你自己的答案。没什么,事实上我甚至没看过你的答案。但这确实表明它是正确的。我的也不使用过时的代码。:)仅供参考,在类中使用
var
早已被弃用,不应在新代码中使用。使用
public
protected
private
。我指出,你现在是不是因为你原来的答案错了而试图过度补偿,现在你接受了我的答案并声称这是你的答案?很小气,我同意。事实上,我已经很长时间没有在成员变量声明中使用var了,我不知道为什么要在这里使用var。但我将把它和我们关于它的讨论放在一起,以便为未来的读者提供信息。