Статический метод get - это плохая практика?

Обсуждали с коллегой, является ли это плохой практикой. Сейчас я не могу найти непосредственных примеров этого в Интернете.

У нас есть много средств отображения объектов базы данных, и мы называем их функции так

(пример) - метод setId get ' s строку из базы данных и установите для нее предопределенные свойства

class Person {

    public static function get($id) {
        $object = new Person;
        $object->setId($id);
        return $object;
    }
}

. Используя ее таким образом, мы можем использовать такие простые конструкции, как это: (где мы получили идентификатор, например, из сообщения)

$person = Person::get($id);

вместо

$person = new Person;
$person->setId($id);

Теперь, мой инстинкт подсказывает мне, что это плохая практика. Но я не могу это объяснить. Может быть, кто-нибудь здесь сможет объяснить, почему это так, или это неплохая практика

Вот еще несколько примеров того, как мы это используем. в основном мы используем его для геттеров. (только имена, а не код. Почти все они просто запускают запрос, который может вернуть 1 объект, а затем использовать идентификатор результата для использования метода 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
}
14
задан Tjirp 2 March 2011 в 13:04
поделиться