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

    Problema visibilità delle variabili in una classe

    Buongiorno a tutti, io ho un metodo all'interno di una classe che ha bisogno di una variabile definita fuori dalla classe in questo modo:

    Codice PHP:
    <?php
    $esterna 
    "valore";

    class 
    esempio
    {
      public function 
    foo()
      {
         global 
    $esterna;
         echo 
    $esterna;
      }
    }
    ?>
    Il problema è che fuori dalla classe ovviamente la variabile viene letta mentre all'interno anche usando global la variabile non viene letta.
    Forse è un problema della configurazione ma non ne ho proprio idea (Lo script gira su php 5).

    Grazie in anticipo per l'aiuto
    Coltiva Linux, Windows si pianta da solo!

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    e se tu facessi
    Codice PHP:
    <?php
    $esterna 
    "valore";

    class 
    esempio
    {
    private 
    $pippo='tuovalore'
     public function 
    foo()
      {
         global 
    $esterna;
         echo 
    $esterna;
      }
    public function 
    set($name,$value)
      {
      eval(
    "\$this->$name=\$value";)
      }

    }


    // e quando chiami la classe la inizializzi?

    $pippo = new Mondo;
    $pippo->set('nomevariabile','valore')
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    In alternativa potresti usare l'array speciale $GLOBALS

    http://www.php.net/manual/it/reserve...es.globals.php
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  4. #4
    Nella stessa classe ho un'altra funzione che utilizza un'altra variabile esterna senza problemi.
    Credo che il problema possa essere solo in quella variabile che non riesco a passare.
    Le variabili in questione sono oggetti di cui uno funziona correttamente, l'altro appunto non funziona all'interno della classe mentre fuori funziona perfettamente.
    Mi sembra molto strano che un oggetto venga utilizzato correttamente mentre l'altro no.
    Coltiva Linux, Windows si pianta da solo!

  5. #5
    up
    Coltiva Linux, Windows si pianta da solo!

  6. #6
    up
    Un aiutino per favore, ne ho bisogno
    Coltiva Linux, Windows si pianta da solo!

  7. #7
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    provato a definire la variabile una costante e poi a richiamarla nella classe?

    es.
    Codice PHP:
    define('esterna',$esterna);


    // e nel metodo della classe

    $myvar=constant('esterna'); 
    dovrebbe funzionare, ma è limitata a variabili semplici, non array per esempio...
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  8. #8
    Si così funziona però la mia variabile è un oggetto, ma non capisco perchè non funziona mentre altri oggetti vengono passati correttamente.

    Ho controllato tutta la classe che non viene passata ma non vedo nulla di strano anche perchè fuori dalla classe che la utilizza non ci sono problemi. Credo comunque che il problema sia nella classe stessa a questo punto.

    Questo è il pezzo di codice che inizializza la classe in questione:

    Codice PHP:
    $module = new modules $modname );

    //Tutte le variabili sono public
    $module->title $title;
    $module->params $params;
    $module->position $position;

    //Contiene l'altra classe che utilizza $module
    require_once $modPath;

    unset ( 
    $module ); 
    Coltiva Linux, Windows si pianta da solo!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.