nelle funzioni in PHP in caso di necessità di possono passare dei parametri che saranno usati internamente come variabili
dato che PHP non richiede il tipo di variabile si indicheranno senza specificare il tipo
sintassi: parametro semplice
function nome_funzione($parametro 1) {...}
se il paramtero passato é un oggetto allora va indicato che tipo di oggetto di cui si tratta
va cioé specificata la classe che ha generato l'oggetto
sarà obbligatorio richiamare la funzione passando un oggetto come parametro e l'oggetto potra essere o lo stesso indicato come tipo o un oggetto di una classe sottoclasse
ovvio in quanto oggetto derivato ereditata i metodi dall'oggetto madre.
sintassi: parametro oggetto
function nome_funzione(NOMECLASSE $parametrooggetto) {...}
esempio:
class Student creo la classe Student da cui ricavo l'oggetto
{
public $name;
public function __construct($name)
{
$this->name = $name;
}
}
function infoStudent(Student $student) la funzione accetta solo oggetti di tipo Student
{
echo "Nome " . $student->name;
}
$obj_student = new Student("Giulia"); oggetto Steudent da passare alla funzione
$info = infoStudent($obj_student); stampa il valore della proprietà "name"..
$info = infoStudent("ciao"); questo genera errore perché la funzione richiede un oggetto, non una stringa
esempio: passaggio parametro con classe sottoclasse
class Mammifero dichiarazione della classe madre Mammifero
{
public function speak()
{
echo "";
}
}
class Cane extends Mammifero definizione della sottoclasse Cane
{
public function speak()
{
echo "Bau Bau";
}
}
function callSpeak(Mammifero $obj) la funzione richiede un oggetto Mammifero
{
echo $obj->speak();
}
$obj1 = new Cane();
callSpeak($obj1); é comunque possibile passare alla funzione un oggetto di una classe derivata