statue rodin le penseur

Appel dynamique de méthode statique

Comment appeler dynamiquement une méthode statique

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

 

Vidéos drôles

Du fingerboard en taille réelle Un bateau accoste sur la plage Un policier saute une barrière Les rouquins ont une ame C'est toujours mieux de se faire rouler dessus Un problème moteur chez ses soldats Un saut raté dans la piscine Démonstration de Kung Fu par un soldat coréen Comment ne pas faire du vin chaud au micro onde