和同事讨论过这是不好的做法.现在我在网上找不到这个例子.
我们有很多数据库对象映射器,并且像这样调用它的函数
(示例) - setId方法获取数据库中的行并将其设置为预定义的属性
class Person {
public static function get($id) {
$object = new Person;
$object->setId($id);
return $object;
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它我们可以使用这样的简单结构:(我们从例如一个帖子得到id)
$person = Person::get($id);
Run Code Online (Sandbox Code Playgroud)
代替
$person = new Person;
$person->setId($id);
Run Code Online (Sandbox Code Playgroud)
现在,我的直觉告诉我这是不好的做法.但我无法解释.也许有人在这里可以解释为什么这是,或者不是不好的做法
以下是我们如何使用它的一些其他示例.我们主要用它来吸气.(只是名称,而不是代码.几乎所有这些都只运行一个查询,它可以返回1个对象,然后使用结果的id来使用setId方法)
class CatalogArticle {
public static function get($id) { }
public static function getByArticlenumber($articlenumber) {} //$articlenumber is unique in the database
public static function getRandom() {} //Runs a query returning a random row
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
我什么时候应该在课堂上使用静态方法,有什么好处?
我现在正在使用PHP.
我正在研究两组函数.
我有一个由日期处理函数组成的类.
在这个类中,我不需要属性,因为每个函数/方法或多或少都是一个实用程序.因此,我使我的班级功能全部静止.
我在这里有几个问题.
1)使用静态方法有什么好处?据我所知,由于没有Object,因此处理开销较低.我也听说这可以忽略不计(视情况而定).
2)除了公用事业之外,还有哪些其他类型的功能/方法是"静态"的良好候选者?
谢谢