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 è rispettivamente accessibile/ modificabile e richiamabile dall'interno della classe stessa, dall'esterno della classe e dall'interno delle classi che ereditano.protected è rispettivamente accessibile/modificabile e richiamabile dall'interno della classe stessa e dall'interno delle classi che ereditano, ma non è accessibile dall'esterno della classeprivate è rispettivamente accessibile/ modificabile e richiamabile unicamente dall'interno della classe stessaVediamo 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à.
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.
Sessioni PHP: cosa sono, come si usanoDalla configurazione di PHP, alla gestione delle sessioni in un... |
Continuous Integration: automatizziamo i client con PhingContinuous Integration: automatizziamo i client con Phing. Esempi... |
Archiviazione delle applicazioni PHP con PharCome incorporare intere applicazioni PHP all'interno di un singolo... |
I traits in PHP 5.4Cosa sono, a cosa servono e come si unsano i traits, la novità per... |
PHP 5.4: il web server integratoImpara ad usare il web server integrato nella versione 5.4 di PHP:... |
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Guida PHP con Windows e IISInstallare ambienti per lo sviluppo e la produzione di applicazioni... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |