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;