web developer Umbria

Ambito di visibilità delle variabili in PHP: public, protected, private.

Con public chiunque può accedere alla classe dall’ esterno. Con protected solo i clienti dell’ Hotel possono accedere ad esempio all’ area dei servizi dell’ HOTEL, con le classi padre e quelle derivate figlio che sono disponibili non dall’ esterno, ma solo dall’ interno della classe. Si tratta di un primo livello di protezione dove solo appartenengo all’ hotel per rimanere nell’ esempio o agli amici di quelli dell’ hotel ho accesso ai metodi e alle proprietà protected. Mentre un secondo livello di protezione con PRIVATE mi consente solo di accedere dall’ interno della classe, senza darmi la possibilità di accedere alle classi derivate dalla principale, quindi parliamo di una restrizione massima. E’ importante quindi definire correttamente nella classe le proprietà e i metodi (le funzioni del procedurale) a seconda della funzionalità prevista dall’ istanza della classe.

Vediamo quindi un esempio PUBLIC

/*
<?php
class Libro {
public $titolo;
public $autore;
public $codiceisbn;
public $prezzo;
public $quantita;
public function getTitolo() {
return $this->titolo;
}
}

e il relativo file di lettura index.php disponibile indirizzo https://www.farwebdesign.com/PHPOOP/8/:

<?php
require_once “classi/Libro.php”;

$nlibro = new Libro();
var_dump($nlibro);
$nlibro->titolo = ‘Sandokan’;
$nlibro->getTitolo();
?>

*/

Vediamo un esempio PROTECTED

/*
<?php
class Libro {
protected $titolo;
public $autore;
public $codiceisbn;
public $prezzo;
public $quantita;
public function getLibro() {
return $this->titolo . “|” . $this->idLibro();
}
protected function idLibro() {
return substr($this->codiceisbn,0,3);
}
}

e il file di lettura index1.php disponibile all’ indirizzo https://www.farwebdesign.com/PHPOOP/8/index1.php :

<?php
require_once “classi/Libro1.php”;

$nlibro = new Libro();
var_dump($nlibro);
//$nlibro->titolo = ‘Sandokan’;
echo “<br>”;
$nlibro->getLibro();
?>
*/

Vediamo un esempio PRIVATE

/*

<?php
class Libro {
private $titolo;
public $autore;
public $codiceisbn;
public $prezzo;
public $quantita;
public function getLibro() {
return $this->titolo . “|” . $this->idLibro();
}
private function idLibro() {
return substr($this->codiceisbn,0,3);
}
}

e il file di lettura index2.php all’ indirizzo https://www.farwebdesign.com/PHPOOP/8/index2.php:

<?php
require_once “classi/Libro2.php”;

$nlibro = new Libro();
var_dump($nlibro);
//$nlibro->titolo = ‘Sandokan’;
echo “<br>”;
echo $nlibro->getLibro();
?>
*/

Sostanzialmente l’uso delle tre parole chiave é subordinato all’ uso che vogliamo delle classi e dalle loro derivate, che con private assumono il massimo della restrizione.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...