静的関数をいつ使用すべきかを学習しようとしていますが、質問の答えを見つけるのに苦労しました。User
クラスに関連するクラスを作成していGroup
ます。ユーザーIDがあり、そこからユーザーオブジェクトを取得したい場合は、次のようなことを行う方がよいでしょう。
$existingUser = User::get($userId);
クラスはこのように定義されています
class User()
{
public static function get($id){
$user = new User();
return $user->findById($id);
}
public function findById($id) {
//find and populate user object
}
}
また
$existingUser=new User();
$existingUser->findById($userId);
クラスはこのように定義されています
class User()
{
public function findById($id) {
//find and populate user object
}
}
ユーザーIDに基づいてGroupオブジェクトの配列を返す関数を作成した場合はどうなりますか?
class User()
{
//stuff
$groupArray = Group::getAllByUserId($this->getId())
//stuff
}
また
class User()
{
//stuff
$group = new Group();
$groupArray = $group->findAllByUserId($this->getId());
//stuff
}
2番目のメソッドは、使用されない空のグループオブジェクトを作成します。それは重要ですか?静的の概念を誤解していますか?クラスをインスタンス化する必要がないので便利だと思いますが、とにかく関数がクラスをインスタンス化すると、そのような目的は無効になりますか?もしそうなら、静的関数が使用される場合の例は何でしょうか?
この単純化された例で他に考慮すべきことはありますか?