PHP/Programmazione/OOP: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ramac (discussione | contributi)
Nessun oggetto della modifica
Ramac (discussione | contributi)
Nessun oggetto della modifica
Riga 10:
== Le classi in programmazione==
Una '''[[w:Classe (informatica)|classe]]''' definisce una ''categoria'' di oggetti, aventi tutti le stesse caratteristiche. In effetti, il concetto di classe precede quello di oggetto:
#prima penso ad una classe e ne definisco i dati, detti '''attributi''' (i quali in realtà sono delle variabili), e le funzioni che li manipolano, dette '''metodi'''
#in seguito '''''istanzio''''' un oggetto a partire dalla classe: possiamo pensare alla classe come ad uno "stampino" per creare oggetti e ad un oggetto come ad un'entità "concreta" della classe. Per creare le istanze di ciascun oggetto è comodo utilizzare un '''costruttore''', ovvero una funzione che imposti fin dall'inizio alcuni attributi fondamentali della classe.
 
Riga 32:
}
}
</source>
In questo modo è stata creata una classe NomeClasse. Per crearne una nuova instanza, sarà sufficiente inserire nella pagina:
<source lang=php>$var = new NomeClasse ($parametri_del_costruttore)</source>
Con questa istruzione creiamo un nuovo oggetto dallo "stampino" NomeClasse; i parametri passati tra parentesi sono quelli richiesti dalla funzione <code>__construct</code> (se prevista).
<br/>Per accedere agli attributi o ai metodi della classe si userà la sintassi:
<source lang=php>
$var->attributo = $a; //posso leggere o modificare gli attributi della classe
$b = $var->esempioMetodo(); //un metodo può restituire un valore
</source>
 
Quando si lavora con le classi, la cosa più comoda è creare un file <code>class.NomeClasse.php</code> in cui inserire il codice della classe e poi richiamare tale file negli script in cui si desidera lavorare tramite l'istruzione <code>include_once</code>:
<source lang=php>include_once("class.NomeClasse.php")</source>
 
=== Creare gli attributi ===
Abbiamo detto che un attributo non è altro che una variabile della classe; bisogna tuttavia fare attenzione che tale sia leggibile dall'esterno della classe. Infatti, quando si lavora normalmente con le variabili, queste hanno un ambito '''privato''', ovvero possono essere lette solo all'interno della funzione o della classe all'interno della quale sono state dichiarate:
<source lang=php>
class Prova {
$a = 5; //questa variabile è privata
 
function metodo () {
echo $a; //da qui la variabile può essere letta
}
}
$ogg = new Prova()
echo $ogg->a //non funziona, in quanto $a non è leggibile all'esterno della classe
</source>
Per poter leggere una variabile anche all'esterno della classe bisgona modificarne l'ambito da privato a '''pubblico''' utilizzando l'istruzione <code>public</code>:
<source lang=php>
class Prova {
public $a = 5; //questa variabile è pubblica
//...
}
$ogg = new Prova()
echo $ogg->a //stampa "5"
</source>
 
In conclusione:
* le variabili normali sono leggibili solo all'interno della classe; questa scelta può essere dettata da motivi di sicurezza
* le variabili con accesso pubblico (dichiarate tramite la parola chiave <code>public</code> sono leggibili anche dall'esterno della classe e sono quindi i suoi attributi.
 
=== Creare i metodi ===
Abbiamo detto che un metodo non è altro che una funzione, la quale va dichiarata all'interno della dichiarazione della classe:
<source lang=php>
class Prova {
function somma($a, $b = 3) { //è una funzione come tutte le altre
$c = $a + $b;
return $c;
}
}
$ogg = new Prova()
$num = $ogg->somma(5,2) //restituisce 7
</source>
[[Categoria:PHP|Programmazione orientata agli oggetti]]