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