Mi hai levato parecchi dubbi, che ritenevo ormai antichi
Un chiarimento forse stupido: la funzione executeQuery() è adatta, in questo caso, a sole query di tipo INSERT INTO, qualsiasi esse siano (da quel che ho capito salva() definita in amico, è UNA delle possibili relazioni che può sfruttare executeQuery()); perciò se volessi altre azioni, dovrei creare un nuovo metodo, dunque una nuova funzione... Giusto?
Quindi se ho capito giusto, potrei organizzare l'archittettura della mia ipotetica applicazione così:
tantaRoba diventa un elenco di azioni che riguardano strettamente il db: INSERT, UPDATE, DELETE, ecc. ecc.
Amico diventa invece un model; uno dei possibili che può sfruttare le azioni definite in tantaRoba, contenente le query dedicate al recupero dei dati.
Potrei inoltre estendere Amico in un controller così da manipolare i dati estratti dal model. Questo controller però sarà in stretta relazione ad Amico, e per cascata a tantaRoba.
Affiderei poi ad una view le istanze.
Ci sono?
Altro chiarimento: mi pare che il debugging, con gli oggetti, sia più difficile... Nel senso che mi accorgo se qualcosa è andato storto solo nella view finale, senza riuscire a risalire velocemente alla fonte dell'errore. Forse tutto sta nel fare i giusti controlli nella funzione?