Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    richiamare istanza oggetto dimanicamente

    Ciao a tutti, devo richiamare una variabile di un oggetto dinamicamente. Mi spiego meglio: ho un oggetto ($this) di una classe con una serie di istanze $this->cognome, $this->nome, $this->sesso, ecc...


    Dopodichè ho una variabile (passata attraverso una funzione) $Xcampo che può assumere come valori i nomi delle istanze di $this
    esempio:
    $Xcampo = "cognome"; $Xcampo = "nome"; ecc...


    Come posso associare (senza usare uno SWITCH) il valore di $Xcampo all'istanza della classe?
    In sostanza qualcosa di questo tipo:
    $this->$Xcampo

    Grazie &

  2. #2
    Sgrufolando un po' ho trovato la possibilità di usare le ReflactionClass... mi sono avvicinato a quello che devo ottenere ma ....


    Codice PHP:
    <?php
    class tessera {
        var        
    $nome  "pippo";
        var     
    $cognome  "pluto";
        var       
    $baz  3;
        
        
        function 
    prova($campo){
            
    $reflect = new ReflectionClass($this);
            
    $props   $reflect->getProperties(ReflectionProperty::IS_PUBLIC ReflectionProperty::IS_PROTECTED);
            
            foreach (
    $props as $x=>$prop) {
                if (
    $campo == $prop->getName()){
                    
    $ciccio $props[$x];
                    echo 
    "<h1>".$ciccio->name."</h1>";
                    
    var_dump($props[$x]);
                    
                    
    # devo trovare il modo di visualizzare "pluto"!!!!!
                    
                
    }
            }
        }
    }


    $mia_classe = new tessera();
    $mia_classe->prova("cognome");
    ?>

  3. #3
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230

    Re: richiamare istanza oggetto dimanicamente

    Originariamente inviato da Beppesan

    $this->$Xcampo
    non ci crederai, ma li chiami proprio cosi.

    $this->$Xcampo.

  4. #4
    esempietto

    Codice PHP:

    class MiaClass{
        
        public 
    $pippo;
        public 
    $pluto;
        public 
    $paperino;
        
        
    }

    //init class
    $miaClass = new MiaClass();
    $miaClass->paperino "lo zio di qui quo qua";
    $miaClass->pippo "l'amico di topolino";
    $miaClass->pluto "il cane di topolino";

    //somewhere in your code
    $variables = array('paperino','pippo','pluto');

    foreach(
    $variables as $variable)
        echo 
    $miaClass->$variable."
    "


    Magari con la reflection puoi scoprire se la variabile pubblica esiste prima di invocare (altrimenti dà errore)
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    @bibi1 => non riporto le imprecazioni che ho appena tirato: la soluzione era dentro mi me... ma non lo sapevo!!!! ....

    @Santino83_02 => yes: farò un check di sicurezza prima di richiamare la proprietà

    Grazie &

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da Santino83_02
    Magari con la reflection puoi scoprire se la variabile pubblica esiste prima di invocare (altrimenti dà errore)
    per quello basta un if isset

  7. #7
    Originariamente inviato da bubi1
    per quello basta un if isset
    vince l'isset ... certo con la reflection sarebbe molto più da sborone comunque io opterei sull'uso di variabili private e getter/setter pubblici

    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.