PHP构造函数返回NULL

我有这个代码。User对象构造函数是否有可能以某种方式失败,从而$this->LoggedUser为它分配了一个NULL值,并在构造函数返回后释放了该对象?

$this->LoggedUser = NULL;

if ($_SESSION['verbiste_user'] != false)

$this->LoggedUser = new User($_SESSION['verbiste_user']);

回答:

假设您使用的是PHP 5,则可以在构造函数中引发异常:

class NotFoundException extends Exception {}

class User {

public function __construct($id) {

if (!$this->loadById($id)) {

throw new NotFoundException();

}

}

}

$this->LoggedUser = NULL;

if ($_SESSION['verbiste_user'] != false) {

try {

$this->LoggedUser = new User($_SESSION['verbiste_user']);

} catch (NotFoundException $e) {}

}

为了清楚起见,您可以将其包装在静态工厂方法中:

class User {

public static function load($id) {

try {

return new User($id);

} catch (NotFoundException $unfe) {

return null;

}

}

// class body here...

}

$this->LoggedUser = NULL;

if ($_SESSION['verbiste_user'] != false)

$this->LoggedUser = User::load($_SESSION['verbiste_user']);

顺便说一句,某些版本的PHP 4允许您在构造函数中将$ this设置为NULL,但我认为这从未得到正式批准,并且最终删除了“功能”。

以上是 PHP构造函数返回NULL 的全部内容, 来源链接: utcz.com/qa/403361.html

回到顶部