Erebot  latest
A modular IRC bot for PHP 7.0+
Patches.php
1 <?php
2 /*
3  This file is part of Erebot, a modular IRC bot written in PHP.
4 
5  Copyright © 2010 François Poirotte
6 
7  Erebot is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  Erebot is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with Erebot. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
21 namespace Erebot;
22 
28 class Patches
29 {
36  public static function patch()
37  {
38  set_error_handler(
39  function ($errno, $errstr, $errfile, $errline) {
40  if (($errno & error_reporting()) !== $errno) {
41  return false;
42  }
43 
44  throw new \Erebot\ErrorReportingException(
45  $errstr,
46  $errno,
47  $errfile,
48  $errline
49  );
50  },
51  E_ALL
52  );
53 
54  // The name "glob" is already used internally as of PHP 5.3.0.
55  // Moreover, the wrapper returns an XML document, hence "xglob".
56  if (!in_array("xglob", stream_get_wrappers())) {
57  stream_wrapper_register('xglob', '\\Erebot\\XGlobStream', STREAM_IS_URL);
58  }
59 
60  /* Needed to prevent libxml from trying to magically "fix" URLs
61  * included with XInclude as this breaks a lot of things.
62  * This requires libxml >= 2.6.20 (which was released in 2005). */
63  if (!defined('LIBXML_NOBASEFIX')) {
64  define('LIBXML_NOBASEFIX', 1 << 18);
65  }
66  }
67 }
static patch()
Definition: Patches.php:36
A class that provides some patches for PHP.
Definition: Patches.php:28