From: daniel Date: Thu, 24 May 2012 13:30:13 +0000 (+0200) Subject: adding workaround for php bug 49143 in the autoloader X-Git-Tag: 1.31.0-rc.0~22097^2^2~155 X-Git-Url: http://git.cyclocoop.org/%24action?a=commitdiff_plain;h=edbde294704c2d3ef40bc73a02b0480f33608e22;p=lhc%2Fweb%2Fwiklou.git adding workaround for php bug 49143 in the autoloader --- diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index abc90e3a1d..6cac36897c 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -1027,6 +1027,14 @@ class AutoLoader { static function autoload( $className ) { global $wgAutoloadClasses, $wgAutoloadLocalClasses; + # Workaround for PHP bug (5.3.2. is broken, it's fixed in 5.3.6). + # Strip leading backslashes from class names. When namespaces are used, leading backslashes are used to indicate + # the top-level namespace, e.g. \foo\Bar. When used like this in the code, the leading backslash isn't passed to + # the auto-loader ($className would be 'foo\Bar'). However, if a class is accessed using a string instead of a + # class literal (e.g. $class = '\foo\Bar'; new $class()), then some versions of PHP do not strip the leading + # backlash in this case, causing autoloading to fail. + $className = preg_replace( '/^\\\\/', '', $className ); + if ( isset( $wgAutoloadLocalClasses[$className] ) ) { $filename = $wgAutoloadLocalClasses[$className]; } elseif ( isset( $wgAutoloadClasses[$className] ) ) {