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

    Richiamare la variabile di classe

    Vorrei richiamare la variabile $nome. Come fare?

    class personale
    {
    public function prova()
    {
    $nome = "Luigi";
    }
    }

    $test = new personale();
    $test->prova();

    echo 'Il nome è: '.$test->nome;

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Devi dichiarare la variabile $nome come public se vuoi accedervi direttamente ed usare $this per impostarla, così

    Codice PHP:
    class personale
    {
        public 
    $nome;
        
        public function 
    prova()
        {
            
    $this->nome "Luigi";
        }
    }

    $test = new personale();
    $test->prova();
    echo 
    'Il nome è: ' $test->nome

  3. #3

  4. #4
    Come posso portarmi un intero ciclo fuori dalla classe?

    codice:
    class personale
        {
        public $nome;
    
    
        public function prova()
            {
            ...
            while($row = $query->fetch())
                {
                echo $row['nome'];
                }
            }
        }

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    In che senso lo vuoi portare fuori?

  6. #6
    Finché voglio richiamare singolarmente una variabile: prima la dichiaro con "public $nome;" e poi la richiamo con "$test->nome;"...

    E se invece volessi richiamare un elenco di voci prelevati da un db? Come dichiaro e come richiamo $row['nome']?

  7. #7
    Ciao, devi creare un metodo e dopo richiamarlo nella pagina da te desiderata.

    Io ad esempio ho creato un metodo per l'ordinamento delle date in modo decrescente:


    public function OrderByDesc(){


    if ($this->OrderByAsc and $this->OrderByDesc == true){
    echo "Errore, controlla le proprietà passate all'oggetto in questione. <br>";
    exit;
    }

    if ($this->OrderByDesc == true){

    $Q="SELECT * FROM tabella_commessa ORDER BY scadenza_commessa DESC";
    $E=mysql_query($Q);

    if ($E and mysql_num_rows($E) > 0){
    while($row = mysql_fetch_array($E)){
    $Id=$row['0'];
    $Scadenza=$row['3'];

    echo "Id: $Id - Scadenza; $Scadenza <br> ";
    }
    }else{
    return mysql_error();
    }


    }

    }

    per richiamarlo faccio così:


    $Test=new ClasseProva();
    $OrderBy=ClasseProva->OrderBy();


    e stampa correttamente le date in ordine decrescente.

  8. #8
    Perfetto!! Approfitto nel chiedere un ultima cosa: le variabili di tipo "private" possono essere prelevate da metodi esterne alla classe? c'è modo per il metodo "ClasseEsterna" di fargli leggere la variabile $nome? so che basterebbe dichiararle come "public", ma in alcuni casi (come succede per i parametri di connessione al db) devono essere di tipo "private"...

    codice:
    class prova {
    
    private $nome = "pinco";
    
    public function ClasseInterna() {
    $this->nome;
    }
    
    }
    
    public function ClasseEsterna() {
    ...
    }

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    No, le variabili dichiarate private sono visibili solo alla classe di appartenenza.
    Se vuoi renderle visibili, la classe di appartenenza deve avere un metodo pubblico che le restituisca
    Codice PHP:
    class prova
    {
        private 
    $nome "pinco";

        public function 
    ClasseInterna() {
            
    $this->nome;
        }

        public function 
    get_nome()
        {
            return 
    $this->nome;
        }
    }

    // ora istanziando un oggetto di tipo prova puoi chiamare il metodo get:nome() e sapere il valore di $nome. 
    Ultima modifica di Alhazred; 22-06-2016 a 09:40

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.