-
Notifications
You must be signed in to change notification settings - Fork 5
/
pudlException.php
104 lines (62 loc) · 3.39 KB
/
pudlException.php
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
////////////////////////////////////////////////////////////////////////////////
// GENERIC PUDL EXCEPTION - ALL OTHER EXCEPTIONS INHERIT THIS CLASS
////////////////////////////////////////////////////////////////////////////////
class pudlException extends Exception {
public function __construct($pudl, $message=null, $code=0, $previous=null) {
parent::__construct($message, $code, $previous);
$this->pudl = $pudl;
if (!($pudl instanceof pudl)) return;
// STORE THE LAST QUERY BEFORE WE EXECUTE A NEW ONE
$query = $pudl->query();
// PREVENT INFINITE RECURSIONS
if (self::$recurse) return;
self::$recurse = true;
// RESET INTERNAL PUDL STATE
try { $pudl->decache(); } catch (Exception $e) {}
try { $pudl->destring(); } catch (Exception $e) {}
try { $pudl->decursion(); } catch (Exception $e) {}
try { $pudl->rollback(); } catch (Exception $e) {}
// RUN A GENERIC QUERY TO RESET EXTERNAL ERROR CODES
try { $pudl('SELECT 1'); } catch (Exception $e) {}
// RESET THE INTERNAL QUERY STRING FOR DEBUGGING
try { $pudl->string(); } catch (Exception $e) {}
try { $pudl($query); } catch (Exception $e) {}
try { $pudl->destring(); } catch (Exception $e) {}
self::$recurse = false;
}
public $pudl = NULL;
private static $recurse = false;
}
////////////////////////////////////////////////////////////////////////////////
// THROWN WHEN A CONNECTION ERROR OCCURS
////////////////////////////////////////////////////////////////////////////////
class pudlConnectionException extends pudlException {}
////////////////////////////////////////////////////////////////////////////////
// THROWN WHEN A DATA TYPE IS INVALID FOR THE GIVEN CALL
////////////////////////////////////////////////////////////////////////////////
class pudlTypeException extends pudlException {}
////////////////////////////////////////////////////////////////////////////////
// THROWN WITH THE DATA VALUE IS INVALID FOR THE GIVEN CALL
////////////////////////////////////////////////////////////////////////////////
class pudlValueException extends pudlException {}
////////////////////////////////////////////////////////////////////////////////
// THROWN WHEN THE GIVEN FUNCTION CALL IS INVALID
////////////////////////////////////////////////////////////////////////////////
class pudlFunctionException extends pudlException {}
////////////////////////////////////////////////////////////////////////////////
// THROWN WHEN THE GIVEN CLASS METHOD CALL IS INVALID
////////////////////////////////////////////////////////////////////////////////
class pudlMethodException extends pudlException {}
////////////////////////////////////////////////////////////////////////////////
// THROWN WHEN A REQUIRED PHP EXTENSION IS NOT INSTALLED/ENABLED
////////////////////////////////////////////////////////////////////////////////
class pudlExtensionException extends pudlException {}
////////////////////////////////////////////////////////////////////////////////
// THROWN WHEN A RECURSION LIMIT IS REACHED
////////////////////////////////////////////////////////////////////////////////
class pudlRecursionException extends pudlException {}
////////////////////////////////////////////////////////////////////////////////
// THROWN WHEN AN ISSUE WITH THE FILE SYSTEM HAS HAPPENED
////////////////////////////////////////////////////////////////////////////////
class pudlFileException extends pudlException {}