Suponiendo que está usando PHP 5, puede lanzar una excepción en el constructor:
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) {}
}
Para mayor claridad, usted podría terminar con esto de forma estática método de fábrica:
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']);
Como acotación al margen, algunas versiones de PHP 4 le permitió establecer los $ a esta NUL L dentro del constructor, pero no creo que haya sido sancionado oficialmente y la 'característica' finalmente se eliminó.
Gran primera pregunta por el camino. –
He visto un cierto CMS popular que devuelve FALSE en un constructor. ¡¿¡¿Que pasa con eso?!?! – loungerdork
Sólo pensé en tocar aquí por razones de documentación. Dado que la fecha es muy remota, es posible que el CMS que está viendo esté diseñado para PHP4. PHP4 solía permitir muchas cosas malas, una de las cuales permitía al usuario sobreescribir $ this en el constructor nombrado (por ejemplo, $ this = false). – techdude