Buongiorno a tutti, c'è una questione che mi confonde e non riesco a spiegarmi.

Vi riporto un esempio così forse riesco a spiegarmi meglio:

codice:
public function GetUser(){
			$returned = $this->d_provider->GetUser();
			if($returned != null){
				$outputVal = Array();
				for($index=0; $index<count($returned); $index++){
					$base = $returned[$index];
					
					$__user->IdUtente 		= $base["IdUtente"];
					$__user->email 			= $base["email"];
					$__user->nome 			= $base["nome"];
					$__user->cognome 		= $base["cognome"];
					$__user->citta 			= $base["citta"];

                                         array_push($outputVal,$__user);
				}
				return $outputVal;
			}else{
				return 0;
			}
		}
Questo esempio in poche parole preleva delle informazioni da una base dati e restituisce un array di oggetti di tipo $__user; ora la cosa che non mi spiego è la seguente:

Come fa l'interprete php a comprendere che $__user è un oggetto di cUtente (questa è la classe) se io non gli inizializzo tale oggetto? Questa funzione così com'è funziona alla perfezione ma se io mettessi subito dopo il for l'istruzione
codice:
$__user = new cUtente();
mi restituisce un array vuoto