Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    38

    Visibilità proprietà di una classe

    Ho una classe con una proprietà protected che in un metodo richiama una classe figlio. Es :

    class a {
    protected $p_a;
    ...
    public function f () {
    $b = new b();
    echo $this->p_a;
    }
    }

    La classe figlio nella costruct inizializza p_a ma quando ne faccio l'echo all'uscita della new perdo il valore.
    Ho provato con $this->p_a, parent::$p_a,... e anche a mettere p_a public, ma niente da fare.
    Qualche suggerimento?
    Grazie

  2. #2
    un problema del genere l'ho risocntrato pure io e l'ho risolto così.

    nella classe madre definisci il construct:

    function __construct() {
    $this->p_a = 5;
    }

    poi nella classe figlia crea un altro construct:

    function __construct() {
    parent::__construct();
    }

    in pratica viene chiamato il metodo construct della classe madre e quindi viene ridefinita p_a. ma a questo punto allora ricorda che la classe figlia deve ereditare dala amdre quindi la classe figlia deve essere dichiarata coem

    class child extends mother

    riassumendo:

    Codice PHP:
    <?
    class madre {
      protected 
    $p_a;

      function 
    __construct() {
        
    $this->p_a 5;
    }

    class 
    figlia extends madre {
      function 
    __construct() {
          
    parent::__construct();
        }
    }

    $figlia = new figlia();
    // deve visualizzare 5
    echo $figlia->p_a;
    ?>

  3. #3
    ERRATA CORRIGE

    il codice qua sopra vale se la variabile non è PROTECTED bensì PUBLIC..dato che PROTECTED significa che la variabile viene vista solo all'interno della classe madre e delle figlie ma n on all'esterno occorre modificare il codice come segue per visualizzare il contenuto di $p_a:

    Codice PHP:
    <?
    class madre {
      protected 
    $p_a;

      function 
    __construct() {
        
    $this->p_a 5;
      }

      public function 
    Mostra() {
        echo 
    $p_a;
      }
    }

    class 
    figlia extends madre {
      function 
    __construct() {
          
    parent::__construct();
        }
    }

    $figlia = new figlia();
    // deve visualizzare 5
    $figlia->Mostra();
    ?>

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.