Dernières vidéos

Associations

Soutenez la Quadrature Soutenez le logiciel libre
 
statue rodin le penseur

Appel dynamique de méthode statique

Comment appeler dynamiquement une méthode statique

methode statique php, methode statique, php dynamique, fonction statique php, php appel methode, appel methode statique classe php, php appeler methode, methodes statiques php, php classe statique, php fonction statique, php appel dynamique methode, php appel static, appeler methode classe php, methode static php, statique 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