Bonjour à tous,
je viens du monde Java et j'avoue être un peu bloqué sur un truc qui paraît pourtant tout con. J'aurais aimé que l'un d'entre vous m'explique où je fais fausse route.
Voila le problème : j'ai deux classes, une classe Logger avec une méthode d'instanciation statique :
et une autre classe qui doit disposer d'une propriété de ce type, partagée par toutes les instances de cette classe (donc statique ?).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 <?php define("TRACE", 0); define("DEBUG", 1); define("INFO", 2); define("WARN", 3); define("ERROR", 4); define("FATAL", 5); define("OFF", 9); class Logger { const mask = "[%s][%s][%s] %s<br>"; private $className = NULL; private $debugLevel = NULL; private static $dateFormat = "d/m/Y H:i:s"; private function __construct($className, $debugLevel) { $this->className = $className; $this->debugLevel = $debugLevel; } public static function getLogger($className = NULL, $debugLevel = OFF) { $c = __CLASS__; return new $c($className, $debugLevel); } ... ?>
Voici son code :
Le problème, je pense c'est que l'opérateur :: est apparu après PHP 5.1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php include_once("Logger.class.php"); class MaClasse { protected static $logger = Logger::getLogger(__CLASS__,INFO); .... }
Pas de souci, me dis-je, je vais donc utiliser call_user_func(), mais sans succès
Quelqu'un peut-il me dire où se situe mon erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php include_once("Logger.class.php"); class MaClasse { protected static $logger = call_user_func("Logger","getLogger",__CLASS__,INFO); .... }
D'avance merci
Partager