riproviamo colla bici :-)
(php4)
Codice PHP:
class bici
{
var $owner = '';
var $color = '';
//costruttore
function bici($o='')
{
if (!empty($o))
$this->owner = $o;
}
function setColor($c)
{
$colors = array('red', 'green');
if (!in_array($c, $colors)) {
trigger_error('colore non valido', E_USER_ERROR);
return FALSE;
}
$this->color = $c;
}
function pedala()
{
return eseguelapedalata();
}
}
la classe bici ha delle proprietà: proprietario e colore e
2 metodi + il costruttore (metodo che viene invocato automaticamnete all'atto della creazione di una istanza, oggetto ... il costruttore è un metodo che abbia lo stesso nome della classe in cui è dichirato) un metodo e un metodo di classe (che non usa proprietà)
Codice PHP:
// faccio una pedalata "generica"
bici::pedala();
$mia = new bici('AlberT');
$tua = new bici('pippo');
$mia->setColor('red')
$tua->setColor('green');
//la tua bici verde pedala
$tua->pedala();
//creo una copia dell'oggetto
$mia2 = &$mia;
//la copia $mia non esiste +
unset($mia);
// il reference count dell'oggetto $mia è 0 quindi il
// garbage collector di PHP lo distrugge;
// la classe esiste comunque
unset($mia2);
la cosa carina è che puoi usare l'ereditarietà per creare oggeti derivati e specializzati, una bici ammortizzata è sempre una bici, quindi perchè non prendere la bici e dargli un ammortizzatore?
Codice PHP:
class fs_bici extends bici
{
var has_full_suspension=TRUE;
}
$mia = new fs_bici('AlberT');
$mia->color='red'; // ora ho una bici biammortizzata rossa!
$mia->pedala();
mi sono stufato di dire sempre che la bici è mia?
Codice PHP:
class albert_bici extends fs_bici
{
function albert_bici()
{
$this->setColor('red');
$this->owner = 'AlberT';
}
}
$bici = new albert_bici();
// ora ho una bici biammortizzata rossa e di AlberT!
$mia->pedala();
spero sia utile e non crei confusione ulteriore