Php 模型中仅获取数据的静态方法:仍然不好吗?反正它是无国籍的

Php 模型中仅获取数据的静态方法:仍然不好吗?反正它是无国籍的,php,oop,Php,Oop,起初对我来说似乎是合理的,但当我寻找使用它的原因时,我发现的大多数人或答案似乎都倾向于回避它 假设我有一个方法,它只需要一个id参数就可以得到一些东西。还是不好吗 例如,我有一个模型,希望这样做:User::getCompleteInfo($id) 这是无状态的,在这个问题上使用static似乎是合理的。为什么要费心创建一个实例,然后你就会得到一些东西呢 但是这是我第一次想到static,这意味着我以前从未使用过它,只是搜索了一下为什么我应该使用它,却找到了答案为什么不应该使用它。有没有解释一下

起初对我来说似乎是合理的,但当我寻找使用它的原因时,我发现的大多数人或答案似乎都倾向于回避它

假设我有一个方法,它只需要一个
id
参数就可以得到一些东西。还是不好吗

例如,我有一个模型,希望这样做:
User::getCompleteInfo($id)

这是无状态的,在这个问题上使用static似乎是合理的。为什么要费心创建一个实例,然后你就会得到一些东西呢


但是这是我第一次想到
static
,这意味着我以前从未使用过它,只是搜索了一下为什么我应该使用它,却找到了答案为什么不应该使用它。有没有解释一下为什么这可能是个坏主意?

静态方法很容易被滥用,但您所建议的模式通常类似于
User::find($id)
User::findById($id)
,有时人们甚至会做一些助手,比如
User::findByEmail($email)
。这种模式适用于这种情况,但注意不要滥用它。

似乎您知道最坏的情况。请告诉我什么时候我可能已经滥用它,以及如何避免。我会非常感激的。我已经做过这方面的研究,但只找到了它不好的原因。当它变得滥用时,往往会变成一个偏好问题。我想需要记住的是,如果您试图使用静态方法作为一种新的全局访问方式,并将代码与这些静态方法紧密耦合。不幸的是,很多“何时知道”通常归结为经验,要求同行进行代码审查,并阅读各种书籍来帮助指导。现在一个好的开始是,但这还不包括何时(不)使用静态方法。嗯,因为看起来我只是在这个需要它的特定控制器中使用模型,我想它不是真正的耦合。顺便说一句,谢谢。在接受你的回答之前,我会等待更多的答案