En supposant que vous utilisiez PHP 5, vous pouvez générer une exception dans le constructeur:
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) {}
}
Pour plus de clarté, vous pouvez envelopper cette méthode dans une méthode d'usine statique:
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']);
Par ailleurs, certaines versions de PHP 4 vous permettaient de définir $ this sur NULL dans le constructeur, mais je ne pense pas qu'il ait été officiellement sanctionné et que la "fonctionnalité" a finalement été supprimée.