PHP 5 – Classes – La méthode n’existe pas ? Utilisez une méthode par défaut

Aujourd’hui, juste un petit article sur des questions qui reviennent souvent : « comment utiliser une méthode de ma classe, par défaut, si celle que j’appelle n’existe pas ? ». Pour se faire, il va falloir utiliser une des méthodes dites « magiques » : __call (vous notez le double « _ »). Il peut y avoir de multiples raisons d’utiliser une telle méthode, moi même je dois l’utiliser pour certains éléments de mon Framework.

php

Alors, comment l’utiliser ? C’est tout simple. En temps normal, ce code vous renvoi une erreur :

<?php class maClasse{ 
	
	public function uneMethode($arguments){ 
		
		echo 'Bienvenue LudiKreation !'; 
	
	} 

} 

$objet = new maClasse(); 

$objet->uneAutreFonction('argument'); ?>

Il peut arriver que vous souhaitiez appeler une méthode par défaut si une méthode appelée n’existe pas et c’est à ce moment là que « __call » fait son entrée !
Revoyons notre précédent code :

<?php 

class maClasse{ 
	
	public function __call($methode, $arguments){ 
		
		echo 'Pourquoi appeler la méthode : '.$methode.' avec les arguments : '.implode(', ', $arguments).' ? Elle n\'existe pas !!'; 
	
	} 
	
	public function uneMethode($arguments){ 
		
		echo 'Bienvenue LudiKreation !'; 
	
	} 

} 

$objet = new maClasse(); 

$objet->uneAutreFonction('argument');

?>

 

Cette fois vous aurez comme résultat :

Pourquoi appeler la méthode : uneAutreFonction avec les arguments : argument ? Elle n'existe pas !!

Au lieu d’une erreur.

Vous l’aurez compris, __call récupère le nom de la méthode appelée en premier argument et en deuxième, un tableau des arguments passés.

Voilà, maintenant vous savez comment utiliser une méthode de classe par défaut en PHP 🙂

Bon code à tous !

Articles pouvant vous intéresser :

Author: Franck Pertegas

Share This Post On

Trackbacks/Pingbacks

  1. PHP – Fonction – Nettoyer une chaîne de caractères pour garantir une URL | LudiBlog - [...] PHP 5 – Classes – La méthode n’existe pas ? Utilisez une méthode par défaut [...]

Submit a Comment

Votre adresse e-mail ne sera pas publiée.