Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957

    Visiblità variabili su funzioni dentro a classi

    Ciao a tutti!

    Ho una classe con un metodo che deve contenere una funzione:

    codice:
    $var=0;
    
    class test{
    
      public function aaa(){
         $var=1
            function(){
                global $var;
                die($var);
            }
      }
    }
    Io vorrei che $var dentro alla funzione prendesse il valore 1 impostato fuori invece non viene preso nemmeno con global (immagino perchè intende il globale assoluto)... come posso risolvere se non passando tutto come parametri?

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao, la variabile deve essere globale rispetto alla classe non alla funzione...quindi...

    class test{
    global $var;
    public function aaa(){
    $var=1
    function(){
    die($var);
    }
    }
    }

    anche se non capisco la doppia funzione interna

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Basta che alla funzione gli fai prendere un parametro

    Codice PHP:
    class test 
    {
        public function 
    aaa($parametro)
        {
            return 
    $parametro;
        }
    }

    //e la usi così
    $var 0;
    $test = new test();
    echo 
    $test->aaa($var); //stamperà il valore 0 o qualunque cosa metti in $var 

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957
    Volevo evitare il parametro perchè sono molte funzioni e sarebbero tutte con gli stessi parametri.

    Io voglio che la variabile sia a livello di metodo, non ci classe.
    codice:
    $var=0;
    class test{
      $var=-1;
      public function aaa(){
         $var=1
            function(){
                global $var;
                die($var);
            }
      }
    }
    Io vorrei il codice morisse con "1".

  5. #5
    Originariamente inviato da GoldEmish
    Volevo evitare il parametro perchè sono molte funzioni e sarebbero tutte con gli stessi parametri.
    Se molte funzioni (in una classe) usano gli stessi parametri, la risposta corretta e' usare proprieta' (cioe' variabili) di classe.

    Il tuo codice e' poco comprensibile, ma in un caso come quello che hai postato puoi puoi dire a una funzione quali valori usare al suo interno usando le closures: http://php.net/manual/en/functions.anonymous.php (esempio #3).

  6. #6
    Codice PHP:
    class test{

      private 
    $var;

      public function 
    __construct() {
        
    $this->var 1;
      }

      public function 
    aaa(){
        
    //quel che vuoi
         
    die($this->var);
      }

    non ho capito bene il senso ma vabbè

    o anche dall'esterno:
    Codice PHP:
    class test{

      private 
    $var;

      public function 
    __construct$var ) {
        
    $this->var $var;
      }

      public function 
    aaa(){
        
    //quel che vuoi
         
    die($this->var);
      }
    }

    $var 1;

    $a = new test$var );
    $a->aaa(); 
    Questa volta, più che un voto.. è favoreggiamento.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957
    Al_katraz984, non è esattamente quello che cercavo io... io voglio una funzione definita all'interno di un metodo di una classe. (tipo una sub funzione locale).

    il motivo di questo è molto particolare, sto cercando di fare un sistema cacheato di generazione PDF derivato dai jrxml.
    Quindi da PHP genero un file cache che all'interno ha del codice php autogenerato.
    Questo file viene incluso durante l'elaborazione, generando delle subfunzioni...

    Forse non avete capito nulla..

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.