如何检查我的对象是否返回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...");
}
答案 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: ...');
}