Если вы используете 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 внутри конструктора, но я не думаю, что он был официально санкционирован, и «функция» была в конечном итоге удалена.