provo a rispiegare meglio la domanda nella speranza che qualcuno capisca e mi aiuti 
allora...
ho scritto una classe A, tra le cui proprietà è contenuta l'istanza di un altra classe B.
i metodi della classe A lavorano tutti con l'istanza della classe B.
io vorrei fare in modo che l'istanza della classe B venisse creata una volta soltanto, che venisse immagazzinata in una delle proprietà di A e che ne fosse restituita una copia ad ogni metodo che la richiede... invece che crearne una nuova ogni volta!
per fare questo ho creato un metodo apposito "loadB()" che controlla se tra le proprietà di A è gia presente una istanza della classe B; se è presente ne ritorna direttamente una copia, altrimenti prima di ritornarla la crea.
In pratica è un Singleton.. perchè l'istanza di B deve essere sempre e solo una... solo
che il suo scope è privato ed è quindi valido solo all'interno della classe A.
.. mentre nel singleton classico lo scope è static e l'istanza è unica per tutta l'applicazione!
il problema nasce dal fatto che l'istanza della classe A viene salvata nella sessione,
e siccome alla sessione sopravvivono solo gli oggetti di primo livello l'istanza di B, contenuta al suo interno, non sopravvive.
o meglio... rimane istanza di B ma risulta vuota.. tutte le sue proprietà vengono azzerate...
facendo un print_r ne esce una cosa tipo: "class B()"... completamente vuota!
quindi quando controllo se B==null il codice rileva la sua presenza e non la ricrea prima di restituirla... restituendo così un oggetto B vuoto! ... e quindi inutilizzabile... e qui errori a manetta!!!
scrivo un po' di codice per spiegarmi meglio:
codice:
class A{
private $var1;
private $var2;
...
private $B=null;
function loadB(){
if($this->B==null)
$this->B = new B($param1,$param2, ... );
return $this->B;
}
function prova1(){
$objB=$this->loadB();
$objB->funzione1();
}
function prova2(){
$objB=$this->loadB();
$objB->funzione2();
}
}
ovviamente il codice è solo a titolo esplicativo.. non ho riportato il mio codice esatto perhè sarebbe un casino... cmq la struttura è quella...
e quindi il domandone è:
visto che il controllo if($this->B==null) si accorge solo se l'istanza di B esiste ma non se è ancora intatta ..
come posso fare questo controllo???
spero di essere stato più chiaro...
ho davvero bisogno d'aiuto non so più dove sbattere la testa 
grazie
citrus