Qui è un po' sbagliata l'implementazione del singleton, però per correggere l'assegnazione controlla questo:

Tu fai una cosa del genere:

codice:
self::$instance->param[$key] = $value;

Che è sbagliata, devi settare la proprietà della classe normalmente con un:

codice:
self::param[$key] = $value;

Lasciando perdere l'instance. C'è da dire che utilizzando self:: avresti dei problemi in caso tu decidessi poi di estendere la classe.
Quindi probabilmente per accedere alle proprietà sarebbe più opportuno utilizzare static::