Sí, puedes. De lo que trata el patrón singleton es de tener una sola instancia de un objeto; sí, se debe impedir la instancia directa, pero no significa que no pueda ser inicializado, después de todo, es un objeto.
Para no variar, remitirse a la documentación oficial, donde trae un buen ejemplo del patrón, con el comportamiento del constructor:
www.php.net/language.oop5.patterns
Un ejemplo simple, por si hiciere falta:
Código PHP:
Ver originalclass Foo
{
private static $instance;
public $param;
private function __construct($param)
{
$this->param = $param;
}
public function singleton($param = null)
{
if (self::$instance === null) {
self::$instance = new self($param);
}
return self::$instance;
}
}
$foo = Foo::singleton('bar');
Debería funcionar sin problema ... pero si es recomendable, es otro tema.
Viendo como quieres utilizar tu clase cuando aplicas el patrón, se parece mucho a la definición de tu método público de tu clase; de hecho, en su propia definición no tienes constructor... no entiendo entonces el propósito, pero perfectamente puedes llamar el método una vez recuperado/instanciado tu objeto.
Código PHP:
Ver original$foo = Foo::singleton();
$foo->bar($params);
... o no entendí.
Un saludo