statue rodin le penseur

Appel dynamique de méthode statique

Comment appeler dynamiquement une méthode statique

static php, php static, methode static php, appel static php, appel php, php methode dynamique, php appel methode, php methode static, php appel static, appel methode php, methode statique php, appel dynamique php, classe static php, php appel dynamique static, classe dynamique php

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