Les méthodes peuvent accepter des données provenant de l'extérieur par l'intermédiaire des paramètres, lesquels sont listés entre des parenthèses suivant l'identificateur de la méthode.
public function uneMethode([Liste_Parametres]){
//Instructions...
}
Les paramètres sont séparés par des virgules et énoncent pour chacun d'eux un identificateur et éventuellement un type et une valeur par défaut.
public function uneMethode(NomClasse $param, $param2, $param3 = 'valeur'){
//Instructions...
}
Le typage des paramètres et équivalent à l'utilisation de l'opérateur instanceof.
public function uneMethode(
NomClasse $param1,
$param2,
$param3 = 'valeur',
array $param4){
if($param1 instanceof NomClasse
&& $param4 instanceof array){
//Instructions...
}
}
Le typage des paramètres ne fonctionne qu'avec des objets et des tableaux. Les types scalaires (valeurs numériques et chaînes de caractères) ne sont pas admis.
Par défaut, les arguments sont passés à la méthode par valeur, c'est-à-dire que la fonction dispose d'une copie de la variable. Dans ce cas, la variable passée ne subira pas de modification, même si sa copie a été modifiée dans la méthode.
Le passage d'arguments par référence entraine une modification de la variable passée, si cette dernière a été changée dans la méthode. Pour obtenir ce type de passage d'arguments, il suffit de préfixer le paramètre par un caractère &.
class Classe {
public function passerValeur($param){
$param .= ' !';
echo $param;
}
public function passerReference(&$param){
$param .= ' ?';
echo $param;
}
}
$valeur = 'bonjour';
$obj = new Classe();
$obj->passerValeur($valeur);
echo $valeur;
$obj->passerReference($valeur);
echo $valeur;