PHP:OOP:返回False

时间:2012-01-11 01:09:16

标签: php oop

如何检查我的对象是否返回false?我有以下课程:

class Test {
    public function __construct($number) {
        if($number != '1') {
            return FALSE;
        }
    }
}

我试过了:

$x = new Test('1');
$x = new Test('2');

但是当我var_dump($ x)时,我得到了相同的结果。我想做一个:

if(! $x = new Test('1')) {
    header("location: xxx...");
}

2 个答案:

答案 0 :(得分:6)

你不能return来自构造函数的任何东西。如果您希望构造对象失败,则必须throw Exception

答案 1 :(得分:0)

正如deceze所说,构造函数不能返回值。您可以创建一个返回false的工厂方法,如:

class Test
{
    public function __construct($number) {
        ...
    }

    public function factory($number) {
        return ($number != '1') ? false : new self($number);
    }
}

$x = Test::factory('1');
if (!$x) {
    header('Location: ...');
}

但我会改用异常

class Test
{
    public function __construct($number) {
        if ($number != '1') {
            throw new IllegalArgumentException('Number must be "1"');
        }
        ...
    }
}

try {
    $x = new Test('1');
} catch (Exception $e) {
    header('Location: ...');
}