gpt4 book ai didi

php 静态函数 vs 实例函数,基础知识

转载 作者:行者123 更新时间:2023-12-04 16:13:53 27 4
gpt4 key购买 nike

我正在尝试了解何时应使用静态函数,但很难找到我的问题的答案。我正在创建一个类 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 静态函数 vs 实例函数,基础知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7451042/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com