Guest User

Untitled

a guest
May 22nd, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. <?php
  2.  
  3. // Bad demo
  4. $errorHandler = new ErrorHandler();
  5.  
  6. set_error_handler(function($errno, $errstr, $errfile, $errline) use ($errorHandler) {
  7. return $errorHandler->error($errno, $errstr, $errfile, $errline);
  8. });
  9.  
  10. set_exception_handler(function($exception) use ($errorHandler) {
  11. return $errorHandler->exception($exception);
  12. });
  13.  
  14. class ErrorHandler
  15. {
  16. protected $logger;
  17.  
  18. public function __construct()
  19. {
  20. $this->logger = new Logger();
  21. }
  22.  
  23. public function error($errno, $errstr, $errfile, $errline)
  24. {
  25. $this->logger->log('Error:' . $errstr);
  26.  
  27. // ...display error message to the user
  28. }
  29.  
  30. public function exception(Exception $exception)
  31. {
  32. $this->logger->log('Error:' . $exception->getMessage());
  33.  
  34. // ...display error message to the user
  35. }
  36. }
  37.  
  38. class Logger
  39. {
  40. public function log($message)
  41. {
  42. // ...write error to file
  43. }
  44. }
  45.  
  46. // Good demo
  47. $logger = new Logger();
  48. $errorHandler = new ErrorHandler($logger);
  49.  
  50. set_error_handler(function($errno, $errstr, $errfile, $errline) use ($errorHandler) {
  51. return $errorHandler->error($errno, $errstr, $errfile, $errline);
  52. });
  53.  
  54. set_exception_handler(function($exception) use ($errorHandler) {
  55. return $errorHandler->exception($exception);
  56. });
  57.  
  58. class ErrorHandler
  59. {
  60. protected $logger;
  61.  
  62. public function __construct(Logger $logger)
  63. {
  64. $this->logger = $logger;
  65. }
  66.  
  67. public function error($errno, $errstr, $errfile, $errline)
  68. {
  69. $this->logger->log('Error:' . $errstr);
  70.  
  71. // ...display error message to the user
  72. }
  73.  
  74. public function exception(Exception $exception)
  75. {
  76. $this->logger->log('Error:' . $exception->getMessage());
  77.  
  78. // ...display error message to the user
  79. }
  80. }
  81.  
  82. class Logger
  83. {
  84. public function log($message)
  85. {
  86. // ...write error to file
  87. }
  88. }
Add Comment
Please, Sign In to add comment