【发布时间】:2011-09-16 22:33:02
【问题描述】:
我正在尝试了解何时应该使用静态函数,但我很难找到答案。我正在创建一个类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
}
第二种方法创建一个从未使用过的空组对象。有关系吗? 我误解了静态的概念吗?我知道不必实例化一个类很有用,所以如果函数无论如何都要实例化一个类,那会破坏目的吗?如果是这样,什么时候使用静态函数的例子是什么?
在这个过于简化的例子中我还应该考虑什么?
【问题讨论】:
标签: php oop static static-functions