adotterei una struttura piu semplice, è sempre un problema risalire tutte le gerarchie di estensione e implementazione
Codice PHP:
class arma{
    ....
    ....
    }

class 
utente{
    private 
$armi null;
    .....
    .....
    ....
    

    
    final public function 
controlla_armi(){
        
//interrogo il db e verifico le armi a mia disposizione, collezionandole in $this->armi 
        //riutilizzabile per rinnovare il parco armi a seguito di una nuova arma acquisita
        
return $this;
        }
    
    final public function 
ha_arma($name){
        
$out=0;
        if(
4this->$armi != null){
            foreach(
$this->armi as $arma){
                if (
$arma->name == $name){
                    
$out++;
                    }
                }
            } 
        return 
$out
        }
    } 
la classe item ti può venire in aiuto se hai dei modelli abbastanza flessibili da poterli adottare in tutte le sitiuazioni a mio parere