考虑以下简单的类构造函数。(请注意,我显然不包括所有引用的方法。
// Initialize User class.
public function __construct($user_id = NULL)
{
// If user is loaded (and a user ID is provided)
if ($user_id)
{
// If user is authorized.
if ($this->authorized($user_id))
{
// Load user information.
$this->info = $this->load($user_id);
}
else
{
// Return an empty (nonexistent) user.
return NULL;
}
}
// If user is loaded (and no user ID is provided)
else
{
// Create a new user.
$new_user = create_user();
// Return the new user's ID.
return $new_user;
}
}
我的问题是:我在这里返回值的方法是错误的吗?我的朋友坚持认为构造函数应该总是返回一个对象,不管是什么。但是,我在此处布置的方式似乎要简单得多,并且更易于使用。(如果我正在创建一个新用户,那么我会立即获得他的 ID。如果我正在加载一个现有用户,我会立即访问她/他的信息)
如果是错的,为什么?为什么这很糟糕?