Angenommen, Sie sind mit PHP 5, können Sie eine Ausnahme im Konstruktor werfen:
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) {}
}
Aus Gründen der Klarheit Sie diese in einem statischen wickeln könnte Factory-Methode:
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']);
Als beiseite, einige Versionen von PHP 4 erlaubt Ihnen $ dieses zu NUL setzen L innerhalb des Konstruktors, aber ich glaube nicht, dass jemals offiziell sanktioniert wurde und das "Feature" schließlich entfernt wurde.
Große erste Frage des Art und Weise. –
Ich habe einen bestimmten populären CMS gesehen, der FALSE in einem Konstruktor zurückgibt. Was ist damit?!?! – loungerdork
Ich dachte nur, ich würde hier aus Gründen der Dokumentation reinhören. Da das Datum so weit zurück ist, ist es möglich, dass das CMS, das Sie sehen, für PHP4 gebaut wurde. PHP4 ermöglichte eine Menge schlechter Dinge, von denen nicht zuletzt der Benutzer es erlaubte, $ this im benannten Konstruktor zu überschreiben (zum Beispiel $ this = false). – techdude