【发布时间】:2011-07-07 06:17:54
【问题描述】:
与一位同事讨论了这是否是不好的做法。现在我在网上找不到直接的例子。
我们有很多数据库对象映射器,并像这样调用它的函数
(示例)- setId 方法从数据库中获取行并将其设置为预定义的属性
class Person {
public static function get($id) {
$object = new Person;
$object->setId($id);
return $object;
}
}
像这样使用它,我们可以使用这样的简单结构:(我们从例如帖子中获取 id)
$person = Person::get($id);
而不是
$person = new Person;
$person->setId($id);
现在,我的直觉告诉我这是不好的做法。但我无法解释。也许这里有人可以解释为什么这是,或者不是不好的做法
以下是我们如何使用它的一些其他示例。我们主要将它用于吸气剂。 (只是名字,不是代码。几乎所有的都只是运行一个查询,可以返回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
}
【问题讨论】:
-
只有我的两分钱,但 Laravel 的 Taylor Otwell 因使用工厂模式静态方法和其他静态方法而受到热议,但猜猜 100% 的单元覆盖率是多少。
标签: php oop static-methods