假设您使用的是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,但我认为这从未得到正式批准,并且最终删除了“功能”。



