次の単純なクラスコンストラクターについて考えてみます。(参照されているすべてのメソッドが含まれているわけではないことに注意してください。
// 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を取得します。既存のユーザーをロードする場合は、すぐにそのユーザーの情報にアクセスできます)
それが間違っているのなら、なぜですか?なぜこれが悪いのですか?