Indicatori di visibilità: public



Come abbiamo imparato dalla precedente lezione, le classi possono condividere le proprie funzionalità (costanti, proprietà e metodi) con le classi eredi. Questo è possibile perché tutte le proprietà ed i metodi utilizzati nelle classi che abbiamo analizzato sono stati dichiarati con la keyword public. Ciò significa, che essi sono disponibili pubblicamente, ovvero in ogni parte dello script: all'interno della classe stessa, all'esterno ed all'interno delle classi che ereditano.

Ma questa flessibilità può essere troppo fuorviante ed in alcuni casi dannosa, senza contare che la sola keyword public non permette la realizzazione di parecchi Design Patterns. Per questo motivo, esistono altri due indicatori di visibilità: protected e private. Ecco le descrizioni di tutti gli indicatori che abbiamo a disposizione:

  • public: la proprietà o il metodo dichiarato come public è rispettivamente accessibile/ modificabile e richiamabile dall'interno della classe stessa, dall'esterno della classe e dall'interno delle classi che ereditano.
  • protected: la proprietà o il metodo dichiarato come protected è rispettivamente accessibile/modificabile e richiamabile dall'interno della classe stessa e dall'interno delle classi che ereditano, ma non è accessibile dall'esterno della classe
  • private: la proprietà o il metodo dichiarato come private è rispettivamente accessibile/ modificabile e richiamabile unicamente dall'interno della classe stessa

Vediamo ora degli esempi pratici che ci aiuteranno a capire le differenze che si ottengono dal comportamento di proprietà e metodi quando vengono dichiarati con uno specifico indicatore di visibilità.

Public

L'indicatore di visibilità public è il più semplice ed immediato dei tre. Dichiarando un elemento come public, si avrà il controllo completo sullo stesso in ogni situazione:

class MyClass {

        const A = 10;
        
        // proprietà
        public $a = 10;
        
        // metodi
        public function sayHello() {
                echo "Hello!";
        }

}

class AnotherClass extends MyClass {
        
        // proprietà
        public $b = 10;

}

$myClass = new MyClass();

// stampa (10)
echo $myClass->a;

// modifica
$myClass->a = 20;

// chiamata ("Hello!")
$myClass->sayHello();

$anotherClass = new AnotherClass();

// stampa (10)
$anotherClass->a;

// chiamata ("Hello!")
$anotherClass->sayHello();

Ricordiamo inoltre, che le costanti dichiarate all'interno di una classe sono sempre considerate pubbliche e quindi accessibili da qualsiasi posizione.

Ultimi articoli PHP

Sessioni PHP: cosa sono, come si usano

Dalla configurazione di PHP, alla gestione delle sessioni in un...

Continuous Integration: automatizziamo i client con Phing

Continuous Integration: automatizziamo i client con Phing. Esempi...

Archiviazione delle applicazioni PHP con Phar

Come incorporare intere applicazioni PHP all'interno di un singolo...

I traits in PHP 5.4

Cosa sono, a cosa servono e come si unsano i traits, la novità per...

PHP 5.4: il web server integrato

Impara ad usare il web server integrato nella versione 5.4 di PHP:...

Altri articoli

Guide PHP

Guida Yii Framework

Come creare applicazioni Web in modo semplice e veloce con il...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Guida PHP con Windows e IIS

Installare ambienti per lo sviluppo e la produzione di applicazioni...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso PHP per Webmaster

11 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti