ID:               33459
 User updated by:  james at safesearching dot com
 Reported By:      james at safesearching dot com
 Status:           Open
-Bug Type:         Dynamic loading
+Bug Type:         Zend Engine 2 problem
 Operating System: redhat 7.3
 PHP Version:      5.0.4
 New Comment:

changing category


Previous Comments:
------------------------------------------------------------------------

[2005-06-24 05:37:07] james at safesearching dot com

Description:
------------
The default behaviour of class_exists calling __autoload breaks BC for
end user scripts which rely on other code outside that users control
(ie PEAR classes).

Many PEAR classes such as Calendar and DB_DataObject use class_exists
to load other classes...

Simply adding an __autoload function to a script using these classes
generates a Fatal error.

An option was added to allow a class_exists($name, FALSE) call to
prevent an __autoload call... but as end users don't have control over
things like PEAR classes, this isn't a viable fix to bug #28333.

Perhaps more reasonably, class_exists should not call __autoload by
default so as to maintain BC... and allow users to explicity request
that behaviour with a second parameter of TRUE.

Reproduce code:
---------------
require_once('Calendar/Calendar.php');

$cal = new Calendar();

function __autoload($name) {
        require_once($name);
}

Expected result:
----------------
Expect no output (ie no errors).

Actual result:
--------------
Warning: __autoload(Calendar_Engine_UnixTS): failed to open stream: No
such file or directory in /home/james/test.php on line 8

Fatal error: __autoload(): Failed opening required
'Calendar_Engine_UnixTS' (include_path='.:/usr/local/lib/php') in
/home/test.php on line 8


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=33459&edit=1

Reply via email to