uhm praticamente si
poiche' le factory richiede sia le classi normali che le classi di factorying.
Inoltre dovrai poi strutturare MOLTO bene le classi "gerarchiche" e quelle parallele.
quindi dovrai corstuire una struttura opportuna di come albero delle classi che come albero di dirs o namespace che userai.
Non e' immediato come pattern. e ci vuole parecchio a capire come gestirlo bene.
Tuttora io sto studiando delle soluzioni factory + namespacing che mi rendano libero
Cmq come struttyura avari una cosa del tipo
--app
|_index
|_ [css]
|_ [js]
|_ [images]
|_ [core]
...|_ [factories]
......|_ main
......|_ database
......|_ pageCreator
......|_ users
......|_ etc...
......|_ [classes]
.........|_user
.........|_user_admin
.........|_user_super
.........|_user_mod
...|_[actions]
......|_userLogin.php
O qualcosa di simile vedi te puoi quano innestare e quanta profonditaà vuoi avere
Faccio esempio con utenti userLogin.php
Codice PHP:
<?PHP
$eh = f_errorHandler::getInstance();
$db = f_database::getInstance( $connectionData ) ;
$currUserLogin = $_POST["login"] :
$currUserPwd = $_POST["pwd"] ;
$userManager = f_userManager::getInstance() ;
$currUser = $userManager->getUserByLogin($currUserLogin,$currUserPwd) ;
if( !$currUser )
{
$eh->reportError( "INVALID LOGIN" ) ;
die();
}
// LOGIN OK STIPA USER IN SESSION
$sh = f_sessionHandler::getIstance();
$sh->set( "user" , $currUser ) ;
// Perform redirect
$mover = f_redirectManager::getIstance();
$mover->goto("./home.html") ;
?>
Come vedi in php e' un poco un casotto ma rende le cose molto leggibili.
Il problema riguarda l'inclusione di quello che ti serve quando ti serve.
Ma se scrivi un opportuna factory f_includeManager puoi gestire le inclusioni e le istanziazioni anche da namespace
Questo unitamente al fatto che per quanto riguarda lo user la factory puo' dare
user , userAdmin , userSuper etc...
ogununa di queste classi e' un'estensione dell'altra e qui vedi un esempio di gerarchia
user
|_ userSuper
...|_userModerator
.....|_userAdmin
Ogni classe estende la precedente aggiungendo metodi e permessi.
La factory quindi deciderà in autonomia che "prodotto" creare a login dello user e ti darà il ris ready to use