statue rodin le penseur

Appel dynamique de méthode statique

Comment appeler dynamiquement une méthode statique

static php, php class method, appel fonction static php, php appel fonction statique, appel methode php, php dynamique, methode statique php, methode statique dynamique, php appel classe dynamique

Date de publication : 2009-08-05 09:58:40

Construction dynamique d'objet

Tout les développeurs php manient depuis un moment les appels dynamiques de classe du genre :


<?php
$class = 'maclasse';
$obj = new $class();
?>

Appel dynamique de fonction membre

On peut aussi appeler de manière dynamique des méthodes membre de classe :


<?php
$class = 'maclasse';
$method = 'methodeMembre';
$obj = new $class();
$obj->$method('message');
?>

Appel dynamique de fonction statique

Depuis php 5.3 on peut aussi appeler dynamiquement des méthodes statiques de la même manière :


<?php
$class = 'maclasse';
$method = 'methodeStatique';
$class::$method('message');
?>

Ce code ne fonctionne pas en php 5.2 et il faut ruser pour faire des appels dynamique de méthode statique :


<?php
$class = 'maclasse';
$method = 'methodeStatique';
call_user_func(array($class, $method), 'message');
?>

Classe utilisée pour l'exemple

Et maintenant voici la classe qui m'a permit de tester ces exemples :


<?php
class maclasse
{
public static function methodeStatique($message)
{
var_dump('Methode statique : '.$message);
}
public function methode($message)
{
var_dump('Methode membre : '.$message);
}
}
$class = 'maclasse';
$method = 'methode';
$obj = new $class();
$obj->$method('message');

$method = 'methodeStatique';
/*En php 5.2*/
call_user_func(array($class, $method), 'message');
/**
* Ce code équivaut au code php 5.3 :
* $class::$method('message');
*/
?>

Image : Marttj

 
 

b1n@sp1n