Если вы просто создаете объект, это не очень полезно. Вы могли бы просто вызвать конструктор. Но если вы делаете что-то более сложное (например, вы начинаете с какого-то шаблона синглтона, но не включили все детали в этом примере), то:
Это звучит примерно так. Если вы хотите предотвратить создание объектов по умолчанию, как показано ниже:
$obj = new Foo("Some Variable");
Вы можете добавить приватный конструктор:
class Foo{
public $val;
private __construct(){}
public static function bar($val){
$inst = new Foo;
$inst->val = $val;
return $inst;
}
}
Теперь вы заставляете людей использовать ваш статический класс. Необходимость установки значения val в функции может исчезнуть, так что вы даже можете добавить значение-параметр в свой частный конструктор, но делать другие вещи (которые вы, вероятно, хотите сделать, например, проверить наличие какого-либо шаблона синглтона) в вашем функция 'bar'