due cose:
1) Puoi anche forzare il tipo del parametro nella dichiarazione della funzione, in maniera di essere sicuro di star lavorando con gli oggetti che ti aspetti..ad esempio:
poi si può anche discutere se la key dev'essere indipendente o un attributo di Colonnacodice:public function aggiungi($key,Colonna $element)
2) ehm... uno script php nasce e muore con l'esecuzione della pagina...cioè, una volta che tu vedi la pagina nel browser lo script è già "morto" da un pò.... l'unico modo per far si che lo script si "ricordi" di stati precedenti è usare un database/cookie/session/file_di_testo/e_tutto_lo_scrivibile_su_filesystem_che_puoi_immag inare, quindi è normale che se refreshi la pagina ti ritorna allo stato di partenza la tabella
cmq per nascondere/mostrare le colonne userei più banalmente Javascript.