Negli script PHP dove viene definita una classe non e' possibile "rompere" la dichiarazione con i tag di script in questo modo:
class NuovaClasse{
?>
<?php
function NuovaClasse($str)
{
echo $str;
}
}
?>
E' pero' possibile e spesso molto utile inserire i tag di inizio/fine script all'interno dei metodi:
<?php
class NuovaClasse{
function NuovaClasse($str,$color)
{
?>
<font color="<?php echo $color; ?>">
<?php echo $str; ?>
</font>
<?php
}
}
?>
E' anche necessario fare attenzione ai nomi dei metodi. In particolare:
-E' sconsigliato definire i metodi con il nome delle funzioni base PHP (mail()
,print()
,var_dump()
,ecc...)
-E' sconsigliato definire i metodi con il nome che inizia con il doppio underscore ( '__' ) perche' viene riservato a funzioni "magiche"
-Non e' possibile definire metodi con i nomi '__sleep()
', '__wakeup
'.
-Non e' possibile definire un metodo 'stdClass' poiche' e' un nome riservato del motore Zend
In PHP non e' possibile inizializzare staticamente le proprieta' di un oggetto, se e' necessaria un' inizializzazione deve essere fatta nel costruttore come viene mostrato nell'esempio seguente. C'e' pero' un'eccezione a quanto detto, infatti e' possibile inizializzare staticamente gli array.
<?php
class NuovaClasse{
var $str='io sono statica'
var $arr=array("Questo", "e", "un", "array", "statico");
function NuovaClasse()
{
$this->PrintVars();
}
function PrintVars()
{
echo $str;
echo $arr[0]." ".$arr[1]." ".$arr[2]." ".$arr[3]." ".$arr[4] ;
}
}
?>
Questa porzione di codice produce in output:
Questo e un array statico
Il codice piu' corretto, per motivi di leggibilita', sarebbe comunque quello che inizializza tutte le prorpieta' nel costruttore come il seguente:
<?php
class NuovaClasse{
var $str;
var $arr;
function NuovaClasse()
{
$this->str='io sono statica'
$this->arr=array("Questo", "e", "un", "array", "statico");
$this->PrintVars();
}
function PrintVars()
{
echo $str;
echo $arr[0]." ".$arr[1]." ".$arr[2]." ".$arr[3]." ".$arr[4] ;
}
}
?>
Imparare a definire classi e utilizzare oggetti