|
Home -> Manuali e Tutorials -> Guida PHP -> Classi (1/3)
Scarica il tutorial | Stampa il tutorial | Cerca nel sito
CLASSI PHP
Una classe è una collezione di variabili e funzioni che utilizzano le variabili definite all'interno della classe stessa per svolgere determinate azioni. Di seguito è riportato il codice semplificato per definire una classe:
<?php
class nome_classe
{
var $nome_variabile; // DEFINIZIONI VARIABILI
var ...
function nome_funzione ( $var1, $var2, ... ) // DEFINIZIONI FUNZIONI
{
...
}
}
?>
|
Un esempio di classe è il seguente:
<?php
class Cart
{
var $items; // Articoli nel carrello
// Aggiunge $num articoli di $artnr nel carrello
function add_item ($artnr, $num)
{
$this->items[$artnr] += $num;
}
// Prende $num articoli di $artnr e li rimuove dal carrello
function remove_item ($artnr, $num)
{
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
?>
|
Il codice definisce una classe chiamata Cart composta da un array associativo che archivia gli articoli nel carrello e due funzioni per aggiungere e rimuovere gli articoli dal carrello stesso.
Avvertimento: NON spezzate una definizione di classe in più file o in più blocchi PHP. Il seguente codice non funziona:
<?php
class test {
?>
<?php
function test() { print 'OK'; }
}
?>
|
In PHP 4, sono permesse inizializzazioni di variabili con valori costanti solamente grazie all'uso di var. Per inizializzare variabili con valori non costanti, bisogna creare una funzione di inizializzazione che viene eseguita automaticamente durante la fase di istanza della classe stessa. Questo tipo di funzione si chiama costruttore.
<?php
/* questo non funziona in PHP 4. */
class Cart
{
var $todays_date = date("Y-m-d");
var $name = $firstname;
var $owner = 'Fred ' . 'Jones';
var $items = array("VCR", "TV");
}
/* Questo è corretto. */
class Cart
{
var $todays_date; // Queste sono le PROPERTIES
var $name;
var $owner;
var $items;
function Cart() // Questo è il COSTRUTTORE
{
$this->todays_date = date("Y-m-d");
$this->name = $GLOBALS['firstname'];
/* etc ... */
}
}
?>
|
Si definisce Property di una classe la variabile chiamata con il var all'inizio della classe stessa, ed avente un nome qualsiasi.
Istanziare una classe significa assegnare la classe ad una variabile usando la funzione natia new. Per creare quindi una variabile oggetto si usa l'operatore new.
I costruttori sono funzioni che esistono in una classe e che sono chiamate automaticamente quando si crea una nuova istanza di una classe con new. In PHP 3, una funzione si transforma in in un costruttore quando ha lo stesso nome di una classe. In PHP 4, una funzione diventa un costruttore quando ha lo stesso nome di una classe ed è definita all'interno della classe stessa; la differenza è sottile, ma cruciale.
<?php
class Cart2
{
var $items;
function add_item ($artnr, $num)
{
$this->items[$artnr] += $num;
}
function remove_item ($artnr, $num)
{
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
$cart2 = new Cart2;
$cart2->add_item("10", 1);
$another_cart2 = new Cart2;
$another_cart2->add_item("0815", 3);
print_r($cart2);
print_r($another_cart2);
?>
|
Il codice sopra, genera gli oggetti $cart2 e $another_cart2, dalla classe Cart2. La funzione add_item() dell'oggetto $cart2 è chiamata per aggiungere una ricorrenza dell'articolo numero 10 a $cart2 (una sorta di carrello spesa). Ad $another_cart2 sono aggiunte 3 ricorrenze dell'articolo numero 0815.
L'output è:
cart2 Object ( [items] => Array ( [10] => 1 ) ) cart2 Object ( [items] => Array ( [0815] => 3 ) )
Il separatore del pathname nome_oggetto / funzione_classe è ->. $cart2->items e $another_cart2->items sono due diverse variabili che differiscono per il nome.
Si noti che la variabile si chiama $cart2->items, e non $cart2->$items, questo perchè le variabili in PHP si scrivono con un unico simbolo di dollaro.
Per poter accedere alle funzioni e alle variabili interne di una classe si usa la pseudo-variabile $this che può essere letta come 'la mia\il mio' o 'di questo oggetto'.
Torna su | Indice Guida | Pagina << 17 >>
|