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::