【发布时间】:2011-10-14 13:00:25
【问题描述】:
到目前为止,我有一个带有构造函数的 PHP 类
public function __construct ($identifier = NULL)
{
// Return me.
if ( $identifier != NULL )
{
$this->emailAddress = $identifier;
if ($this->loadUser() )
return $this;
else
{
// registered user requested , but not found !
return false;
}
}
loadUser 的功能是在数据库中查找特定的电子邮件地址。
当我将标识符设置为某些电子邮件时,我确定它不在数据库中;第一个 IF 被通过,然后进入第一个 ELSE。这里构造函数应该返回 FALSE;但相反,它返回一个具有所有 NULL 值的类的对象!
如何防止这种情况发生?谢谢
编辑:
谢谢大家的回答。那是相当快的!我看到 OOP 方法是抛出异常。所以抛出一个,我的问题改变了我应该如何处理异常? php.net 的手册相当混乱!
// Setup the user ( we assume he is a user first. referees, admins are considered users too )
try { $him = new user ($_emailAddress);
} catch (Exception $e_u) {
// try the groups database
try { $him = new group ($_emailAddress);
} catch (Exception $e_g) {
// email address was not in any of them !!
}
}
【问题讨论】:
-
构造函数不应显式返回任何内容。如果您需要发出失败信号,则抛出调用代码可以捕获的异常。
-
你应该写一个答案 Marc B,我会投票给你。
-
投票和接受最多的答案远非最佳答案。请考虑更改接受的答案。
标签: php oop class constructor