J'ai un souci, j'ai souhaité avoir ma routine d'affichage des plantages organisés via TRY - CATCH & THROW
Voici un extrait:
Le souci est dans le constucteur (en gras)
Testé sous debugger (Netbeans), le code (la succession des instructions.... ) du IF (Ligne n°1 passe au dessus de la ligne N°2 et donc, je ne retourne jamais de valeur de mon constructeur et donc je me plante...
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 abstract class CustomException extends Exception implements IException { protected $message = 'Unknown exception'; // Exception message private $string; // Unknown protected $code = 0; // User-defined exception code protected $file; // Source filename of exception protected $line; // Source line of exception private $trace; // Unknown public function __construct($message = null, $code = 0) { if (!$message) { throw new $this('Unknown '. get_class($this)); } parent::__construct($message, $code); } public function __toString() { return get_class($this) . " '{$this->message}' in {$this->file}({$this->line})\n" . "{$this->getTraceAsString()}"; } } class myException extends Skeleton { private $debug ; public static $myExcept = NULL ; /** * Exception: Constructor * */ public function __construct( $debug=false ) { if (!self::$myExcept) (Ligne N° 1) self::$myExcept = $this ; (Ligne N° 2) $this->debug = $debug ; if ($this->debug) print("===> Exception Instanciated" . CRLF) ; return(self::$myExcept) ; } /** * Exception: Destructor * */ public function __destruct() { if ($this->debug) print("===> Exception Ended" . CRLF) ; } /** * Exception: Execute (for test purpose) ; * */ function execute() { //user_error("myException instanciated" , E_USER_NOTICE) ; } /** * Exception: Display Exception * */ function display_exception($E) { $T = $E->getTrace() ;
J'ai pu reproduire ce "phénomène" à maintes reprises.
A noter que la variable myExcept est bien PUBLIC STATIC !!!
Je fais pourtant la même chose pour d'autres classes sans souci comme ici:
Merci à celui qui pourra m'expliquer
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 /** * Environment; Constructor * */ public function __construct( $debug ) { if (!self::$envInst) { self::$envInst = $this ; $this->debug = $debug ; if ($this->debug) print("===> Environ Instanciated" . CRLF) ; } return(self::$envInst) ; }
Partager