Я пытаюсь узнать, когда следует использовать статические функции, и мне было трудно найти ответ на мои вопросы. Я создаю класс User
, который связан с классом Group
. Если у меня есть идентификатор пользователя, и я хочу получить от него объект пользователя, лучше сделать что-то вроде
$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
}
}
Что если я напишу функцию, которая возвращает массив объектов Group на основе идентификатора пользователя?
class User()
{
//stuff
$groupArray = Group::getAllByUserId($this->getId())
//stuff
}
или
class User()
{
//stuff
$group = new Group();
$groupArray = $group->findAllByUserId($this->getId());
//stuff
}
Второй метод создает пустой групповой объект, который никогда не используется. Это имеет значение?
Я неправильно понимаю концепцию статики? Я знаю, что это полезно для того, чтобы не создавать экземпляры класса, так что, если функция создает экземпляр в любом случае, это побеждает такую цель? Если это так, что будет примером того, когда будет использоваться статическая функция?
Что-нибудь еще, что я должен рассмотреть в этом упрощенном примере?