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

    Accesso variabili da stessa Classe?!?

    Salve,
    credo di essermi impantanato con un piccolo quanto banale problema di accesso alle variabili.
    Ho studiato che dichiarando una variabile "public" all'interno di una classe è possibile accedervi da qualunque funzione della classe. Tuttavia non riesco a capire come mai a me non funziona.
    Potrei passare il valore come argomento all'interno della funzione, ma non è ciò che mi interessa.
    Il codice è il seguente:

    Codice PHP:
    <?php

    class prova {
          
              public 
    $a = array(); //dichiaro public la variabile array

    public function valore() {
             
    $a[0] = 20//assegno il valore al primo elemento dell'array
             
    // chiudo la funzione

    public function stampa() {
             echo 
    $a[0]; // stampo il valore di $a[0];
    // chiudo la funzione
    // chiudo la classe

    $oggetto = new prova();
    $oggetto->valore(); // assegno
    $oggetto->stampa(); //stampo (ma non stampa nulla)

    ?>
    $a[0] è come se non esistesse.

    Vi ringrazio in anticipo per la risposta.

    F.C.
    Ultima modifica di k.b; 29-04-2015 a 18:37

  2. #2
    Prima di tutto l'attributo dovrebbe essere dichiarato private e non public dato che col modificatore public sarebbe accessibile anche dall'esterno della classe.
    Comunque per accedere all'attributo $a basta utilizzare $this->a
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Ciao satifal,
    grazie per la risposta. In effetti lo avevo già provato. Se per esempio uso $this->a; mi restituisce "array" .. quindi vuoto.
    Significa che il valore che assegno all'array $a[0] con la funzione assegna() viene cancellato prima dell'inizializzazione della funzione stampa() che è successiva?

    Grazie

  4. #4
    Ovviamente devi usare $this->a sia nell'assegnazione che nell'accesso.

  5. #5
    K.B,
    se nella funzione assegna() metto anche un'altra riga "echo $a[0];" me lo stampa giusto.
    Il problema è che non lo stampa nella funzione successiva ovvero stampa() perchè sembra non arrivi niente.
    Il valore è come se non fosse mai stato assegnato a quell'array. :\

  6. #6
    Ma hai letto le risposte?

    Devi usare $this->a non $a. La prima e' la proprieta' di classe (accessibile a tutti i metodi), la seconda e' una variable locale del singolo metodo.

  7. #7
    k.b. hai ragione, in effetti con $this->variabile funziona tutto. Grazie Mille! THREAD RISOLTO!

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.