Hola,

sto dando una "ristrutturata" generale al mio framework, sia per ammodernarlo sia per prepararlo al passaggio ai namespace (che in realtà sarà estremamente facile una volta che finisco le variazioni che sto attualmente facendo).

--- Premessa

Il mio cms poggia sul mio framework. Entrambi, framework e cms, hanno un set di componenti che possono essere istanziati.
I componenti del framework sono generici, ovvero se li prendi e li sposti in un altro sistema, rispettate le dipendenze delle classi, funzioneranno senza problemi.
I componenti del CMS, invece, lavorano sempre nello stesso modo di quelli del framework.

Ora, però, ho un dubbio esistenziale: visto che si tratta di componenti del CMS stesso che lavorano e cooperano tra di loro (utenti -> sessioni, utenti -> acl, acl -> metadati, sessioni -> metadati, e via dicendo) invece di passare al costruttore una tonnellata di argomenti non è meglio utilizzare un registro?

Premesso che già utilizzo un registro perché altrimenti ai componenti che gestiscono le richieste dovrei passare N^M parametri, cosa ovviamente ingestibile, al quale associo i componenti base che instanzio (database, sessioni, utente, logs, acl e via dicendo)

--- Domanda

Ora, ho un dubbio: invece di passare una tonnellata di parametri al costruttore per i componenti del cms, non conviene usare il registro anche all'interno?

In pratica, invece nell'inizializzazione di fare qualcosa tipo
codice:
$_USER = new NemesiCMS_User
(
    $_DATABASE,
    $_SESSION,
    $_SESSIONS,
    $_CHIPER,
    $_ACLs,
    $_METADATA,
    $_CONFIG['User']['AutoLogin'],
    $siteUri,
    $_CONFIG['User']['AutoLoginCookieName'],
    $_CONFIG['User']['CheckFailedLogins'],
    $_CONFIG['User']['MaxFailableLogins'],
    $_CONFIG['User']['CheckUserLogged'],
    $_CONFIG['User']['DropOldSession']
);
NemesiFW_Registry::Set('NemesiCMS.User', $_USER);
Faccio
codice:
NemesiFW_Registry::Set('NemesiCMS.User', new NemesiCMS_User());
e poi nella classe
codice:
    public function __construct()
    {
        $this->database = NemesiFW_Registry::Get('NemesiCMS.Database');
        $this->session  = NemesiFW_Registry::Get('NemesiCMS.Session');
        $this->sessions  = NemesiFW_Registry::Get('NemesiCMS.Sessions');
.
.
.
Che ne pensate? Secondo voi quale soluzione conviene adottare?

PS: inoltre per le classi del framework vorrei passare ad un costruttore unificato, ovvero un bell'array passato al costruttore con coppia di chiavi/valore così da avere innanzi tutto un'impatto visivo migliore visto che si vede subito qual'è l'argomento e qual'è il parametro e secondo si riduce il rischio di fare casini, anche per motivi di compatibilità ... un'aggiunta di un parametro non causa l'esplosione del mondo