[ 
https://issues.apache.org/jira/browse/LOG4PHP-129?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13037543#comment-13037543
 ] 

Moritz Schmidt commented on LOG4PHP-129:
----------------------------------------

> if (function_exists('__autoload')) 
> spl_autoload_register('__autoload'); 


Only a partial fix. There'd still be a problem if someone inlcudes log4php (or 
_any_ other library using spl_autoload_register) first, and only then includes 
the one library that defines and uses __autoload .

Seriously: 
Code that still uses __autoload essentially breaks autoloading for every other 
module. 

spl_autoload_register has been around for long enough now, I wouldnt consider 
trying to fix other lib's bad behaviour. A FAQ entry may be appropriate..

> Log4PHP causes odd errors in the underlying application if used with source 
> having an existing __autoload function
> ------------------------------------------------------------------------------------------------------------------
>
>                 Key: LOG4PHP-129
>                 URL: https://issues.apache.org/jira/browse/LOG4PHP-129
>             Project: Log4php
>          Issue Type: Bug
>          Components: Code
>    Affects Versions: 2.0
>         Environment: Ubuntu & Apache
>            Reporter: James Brown
>             Fix For: 2.1
>
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> According to the PHP documentation (see 
> http://us.php.net/manual/en/function.spl-autoload-register.php): "If your 
> code has an existing __autoload function then this function must be 
> explicitly registered on the __autoload stack. This is because 
> spl_autoload_register() will effectively replace the engine cache for the 
> __autoload function by either spl_autoload() or spl_autoload_call()."
> I was attempting to introduce Log4PHP into an existing project that already 
> had an __autoload function defined.  As soon as I included Logger.php, I 
> started getting errors from other components.  These were confusing at first 
> because the error was "Class 'Smarty' not found in ...".  It turns out this 
> was due to the previous __autoload function being overwritten by the call to 
> spl_autoload_register in Logger.PHP.
> I suggest a simple fix.  Add the following two lines to Logger.php around 
> line 31 (just before the call to spl_autoload_register(array('Logger', 
> 'autoload'));).  That fixed the problem in my  particular application.
> if (function_exists('__autoload'))
>       spl_autoload_register('__autoload');
> At the very least, this is an easy fix for anyone having this problem w/ 
> Log4PHP.  They can simply put these lines just prior to the require of 
> Logger.php and it will fix the problem.  If Log4PHP is not going to include 
> this code, please at least put a note in the documentation so that people 
> using Log4PHP know what they need to do to solve the problem.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to